Beispiel – System-Broadcasts empfangen

Beispiel – System-Broadcasts empfangen

1. Grundkonzepte von Broadcasts

1. Was sind System-Broadcasts

  • Android enthält zahlreiche eingebaute System-Broadcasts, um über Änderungen des Systemzustands zu informieren.
  • Häufige System-Broadcasts:
    • Niedriger Akkustand / Änderung des Akkustands
    • Boot abgeschlossen (BOOT_COMPLETED)
    • Netzwerkstatusänderung (CONNECTIVITY_CHANGE)
    • Umschalten des Flugmodus
    • Zeit / Zeitzonenänderung

2. Aufgabe des BroadcastReceivers

  • Apps registrieren einen BroadcastReceiver, um gewünschte Broadcasts zu überwachen.
  • Wenn ein Broadcast eintrifft, ruft das System automatisch die Methode onReceive() des Receivers auf.
  • Die Geschäftslogik wird innerhalb von onReceive() implementiert.

2. Zwei Registrierungsarten für Broadcasts

VergleichskriteriumDynamische Registrierung (Code-Registrierung)Statische Registrierung (Manifest-Registrierung)
RegistrierungsortIn Komponenten wie Activity / ServiceAndroidManifest.xml
LebenszyklusAn die registrierte Komponente gebundenUnabhängig von Komponenten; Empfang auch bei nicht gestarteter App
FlexibilitätHoch, jederzeit registrieren / abmeldenNiedrig, festgelegt bei Installation
EinsatzbereichBroadcasts, die den Komponentenlebenszyklus berücksichtigen müssen
Restriktionen neuerer Android-VersionenKeine besonderen EinschränkungenAndroid 8.0+ hat starke Einschränkungen für implizite Broadcasts

Wichtig: Die statische Registrierung für den Broadcast CONNECTIVITY_CHANGE (Netzwerkänderung) ist ab Android 7.0 nicht erlaubt. Es muss die dynamische Registrierung verwendet werden.

3. Einen BroadcastReceiver erstellen

Grundlegende Schritte

  1. Neue Klasse erstellen, die BroadcastReceiver erweitert
  2. Die Methode onReceive(Context context, Intent intent) überschreiben
  3. Logik zur Verarbeitung eingehender Broadcasts in onReceive() schreiben

Code

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Broadcast-Logik verarbeiten
    }
}Code-Sprache: PHP (php)

4. Kompletter Ablauf der dynamischen Registrierung

1. Membervariablen definieren

private NetworkChangeReceiver networkChangeReceiver;
private IntentFilter intentFilter;Code-Sprache: PHP (php)

2. Registrierung in onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    networkChangeReceiver = new NetworkChangeReceiver();
    intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
    registerReceiver(networkChangeReceiver, intentFilter);
}Code-Sprache: JavaScript (javascript)

3. Abmeldung in onDestroy() (Erforderlich!)

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(networkChangeReceiver);
}Code-Sprache: CSS (css)

4. Innere Klasse für Receiver definieren

class NetworkChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Das Netzwerk hat sich geändert", Toast.LENGTH_LONG).show();
    }
}Code-Sprache: JavaScript (javascript)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert