Wie unterscheiden sich die dynamische und statische Registrierungsmethode für BroadcastReceiver in Android?
sobes.tech KI
Antwort von AI
Auf Android gibt es zwei Möglichkeiten, einen BroadcastReceiver zu registrieren — statisch und dynamisch.
Statisch wird im Manifest der Anwendung (AndroidManifest.xml) registriert. Dieser Empfänger wird vom System aktiviert, auch wenn die Anwendung nicht läuft. Er ist nützlich, um System-Broadcast-Nachrichten zu empfangen, aber ab Android 8.0 (Oreo) ist die statische Registrierung für die meisten Ereignisse eingeschränkt.
Dynamisch wird programmatisch im Code (meist in einer Activity oder Service) mit der Methode registerReceiver() registriert. Dieser Empfänger ist nur aktiv, solange das Objekt, in dem er registriert wurde, lebt, und erfordert einen expliziten Aufruf von unregisterReceiver(). Die dynamische Registrierung ist flexibler und ermöglicht es, Broadcast-Nachrichten nur während der Laufzeit des Components zu empfangen.
Beispiel für dynamische Registrierung:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Ereignisverarbeitung
}
};
// In onCreate() oder onStart()
registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
// In onDestroy() oder onStop()
unregisterReceiver(receiver);