Sobes.tech
Junior

Was ist BroadcastReceiver in Android?

sobes.tech KI

Antwort von AI

Dies ist eine Komponente, die auf systemweite oder benutzerspezifische Broadcast-Nachrichten reagiert. Sie hat keine Benutzeroberfläche und ist für die Ausführung von Hintergrundoperationen als Reaktion auf bestimmte Ereignisse vorgesehen.

Hauptmerkmale:

  • Reagiert auf Intents mit einer bestimmten Aktion.
  • Kurzlebige Komponente, ihre Methode onReceive() wird für einen kurzen Zeitraum ausgeführt.
  • Nicht für langwierige Operationen geeignet. Bei länger dauernden Arbeiten sollte ein Service aus onReceive() gestartet werden.
  • Kann statisch im Manifest oder dynamisch im Code registriert werden.

Anwendungsbeispiele:

  • Reaktion auf Netzwerkstatusänderungen (android.net.conn.CONNECTIVITY_CHANGE).
  • Reaktion auf Systemstart (android.intent.action.BOOT_COMPLETED).
  • Verarbeitung eingehender SMS.
  • Empfang von benutzerdefinierten Nachrichten, die von anderen Komponenten der Anwendung oder anderen Anwendungen gesendet werden.

Registrierung im Manifest:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" damit andere Anwendungen Intents senden können
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Registrierung im Code:

// In einer Activity oder einem Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// In onDestroy() oder onStop() - Registrierung muss aufgehoben werden!
unregisterReceiver(receiver);

Klasse BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Hier wird Code ausgeführt, wenn der Intent empfangen wird
        // Zum Beispiel:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Benutzerdefinierte Aktion empfangen!", Toast.LENGTH_SHORT).show();
        }
    }
}