Czy trzeba zarejestrować BroadcastReceiver w pliku manifestu, czy można go podłączyć programowo?
sobes.tech AI
Odpowiedź od AI
W Androidzie BroadcastReceiver można zarejestrować na dwa sposoby:
-
W manifeście (statycznie) — ta metoda pozwala systemowi znać o odbiorniku nawet wtedy, gdy aplikacja nie jest uruchomiona. Jest to wygodne do odbierania komunikatów broadcast, które mają uruchamiać aplikację lub wykonywać działania w tle.
-
Programowo (dynamicznie) — rejestracja odbywa się w kodzie, zazwyczaj w metodach cyklu życia Activity lub Service. Ta metoda daje większą kontrolę: odbiornik jest aktywny tylko podczas rejestracji, co pomaga oszczędzać zasoby i unikać wycieków.
Wybór metody zależy od zadania. Na przykład, dla systemowych komunikatów broadcast, które muszą być obsługiwane zawsze, używa się rejestracji w manifeście. Dla lokalnych lub tymczasowych zdarzeń — rejestracji programowej.
Przykład rejestracji programowej:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// obsługa zdarzenia
}
};
// Rejestracja
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// Anulowanie rejestracji
unregisterReceiver(receiver);