Sobes.tech
Junior

Wat is een BroadcastReceiver in Android?

sobes.tech AI

Antwoord van AI

Dit is een component dat reageert op systeem- of gebruikers-broadcasts. Het heeft geen gebruikersinterface en is bedoeld om achtergrondtaken uit te voeren als reactie op bepaalde gebeurtenissen.

Belangrijkste kenmerken:

  • Reageert op Intenties (Intents) met een specifieke actie.
  • Kortdurend component, de onReceive()-methode wordt voor een korte periode uitgevoerd.
  • Niet bedoeld voor langdurige operaties. Als langdurig werk nodig is, moet een Service worden gestart vanuit onReceive().
  • Kan statisch worden geregistreerd in de manifest of dynamisch in de code.

Voorbeelden van gebruik:

  • Reageren op netwerkstatuswijzigingen (android.net.conn.CONNECTIVITY_CHANGE).
  • Reageren op systeemstart (android.intent.action.BOOT_COMPLETED).
  • Verwerken van inkomende SMS-berichten.
  • Ontvangen van aangepaste berichten verzonden door andere componenten of andere apps.

Registratie in de manifest:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" zodat andere apps intents kunnen sturen
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Registratie in de code:

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

// In onDestroy() of onStop() - registratie moet worden geannuleerd!
unregisterReceiver(receiver);

Klasse BroadcastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Hier wordt code uitgevoerd bij ontvangst van Intent
        // Bijvoorbeeld:
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Aangepaste actie ontvangen!", Toast.LENGTH_SHORT).show();
        }
    }
}