Czym różnią się dynamiczne i statyczne metody rejestracji BroadcastReceiver w Androidzie?
sobes.tech AI
Odpowiedź od AI
Na Androidzie istnieją dwa sposoby rejestrowania BroadcastReceiver — statyczny i dynamiczny.
Statyczny rejestruje się w manifeście aplikacji (AndroidManifest.xml). Taki odbiornik jest aktywowany przez system nawet jeśli aplikacja nie jest uruchomiona. Jest przydatny do nasłuchiwania komunikatów systemowych, ale od Androida 8.0 (Oreo) rejestracja statyczna jest ograniczona dla większości zdarzeń.
Dynamczny rejestruje się programowo w kodzie (zwykle w Activity lub Service) za pomocą metody registerReceiver(). Taki odbiornik działa tylko tak długo, jak żyje obiekt, w którym został zarejestrowany, i wymaga jawnego wywołania unregisterReceiver(). Rejestracja dynamiczna jest bardziej elastyczna i pozwala słuchać komunikatów broadcast tylko podczas działania komponentu.
Przykład rejestracji dynamicznej:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// obsługa zdarzenia
}
};
// W onCreate() lub onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// W onDestroy() lub onStop()
unregisterReceiver(receiver);