Sobes.tech
Junior

Qu'est-ce que BroadcastReceiver dans Android?

sobes.tech IA

Réponse de l'IA

Il s'agit d'un composant qui réagit aux messages broadcast du système ou de l'utilisateur. Il n'a pas d'interface utilisateur et est conçu pour effectuer des opérations en arrière-plan en réponse à des événements spécifiques.

Caractéristiques principales :

  • Réagit aux intentions (Intents) avec une action (action) spécifique.
  • Composant de courte durée, sa méthode onReceive() s'exécute sur une courte période.
  • N'est pas destiné à des opérations longues. Si un travail prolongé est nécessaire, il faut lancer un Service depuis onReceive().
  • Peut être enregistré statiquement dans le manifeste ou dynamiquement dans le code.

Exemples d'utilisation :

  • Réagir aux changements d'état du réseau (android.net.conn.CONNECTIVITY_CHANGE).
  • Réagir au démarrage du système (android.intent.action.BOOT_COMPLETED).
  • Traiter les SMS entrants.
  • Recevoir des messages personnalisés envoyés par d'autres composants de l'application ou d'autres applications.

Enregistrement dans le manifeste :

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" pour permettre à d'autres applications d'envoyer des intents
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Enregistrement dans le code :

// Dans une Activity ou un Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);

// Dans onDestroy() ou onStop() - il est important de désenregistrer!
unregisterReceiver(receiver);

Classe BroadcastReceiver :

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Le code s'exécute ici lors de la réception de l'Intent
        // Par exemple :
        if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
            Toast.makeText(context, "Action personnalisée reçue!", Toast.LENGTH_SHORT).show();
        }
    }
}