Care este diferența dintre metodele dinamică și statică de înregistrare a BroadcastReceiver în Android?
sobes.tech AI
Răspuns de la AI
Pe Android, există două moduri de a înregistra un BroadcastReceiver — static și dinamic.
Static se înregistrează în manifestul aplicației (AndroidManifest.xml). Acest receptor este activat de sistem chiar dacă aplicația nu rulează. Este util pentru ascultarea mesajelor broadcast ale sistemului, dar începând cu Android 8.0 (Oreo), înregistrarea statică este limitată pentru majoritatea evenimentelor.
Dinamic se înregistrează programatic în cod (de obicei în Activity sau Service) folosind metoda registerReceiver(). Acest receptor este activ doar cât timp obiectul în care este înregistrat este viu și necesită apel explicit unregisterReceiver(). Înregistrarea dinamică este mai flexibilă și permite ascultarea mesajelor broadcast doar în timpul funcționării componentului.
Exemplu de înregistrare dinamică:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// procesare eveniment
}
};
// În onCreate() sau onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// În onDestroy() sau onStop()
unregisterReceiver(receiver);