Classe Broadcast Receiver et méthode registerReceiver
Salut, je suis en train d'essayer de comprendre Récepteur de Radiodiffusion , je suis allé à travers de nombreux exemples de codes , mais encore quelques doutes. Je voulais savoir quand nous devons étendre le Récepteur de Radiodiffusion de classe et quand doit-on utiliser registerReceiver()
méthode et quand doit-on créer un objet pour BroadcastReceiver. Dans certains programmes, je suis tombé sur registerReceiver
méthodes utilisées, mais sans étendre le Récepteur de Radiodiffusion de classe. Je voulais aussi savoir comment le onReceive
méthode est appelée.
L'approche qui devrait être utilisé quand?
ici est la registerReceiver méthode:
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
........
}
}
}, new IntentFilter(SENT));
Objet créé pour BroadcastReceiver
:
private BroadcastReceiver intentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
.................
}
};
source d'informationauteur user2717079
Vous devez vous connecter pour publier un commentaire.
Android a intention d'action pour récepteur de radiodiffusion. Récepteur de radiodiffusion sera déclencheur lorsqu'il écoute toute action qui inscrit en son sein.
Maintenant, nous allons prendre un exemple :
Que nous avons besoin d'écouter l'action de "chaque fois que tous les périphériques bluetooth à se connecter à notre appareil". Pour que android a corrigé action
android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED
De sorte que vous pouvez l'obtenir via manifeste & inscription
PAR le Manifeste d'Inscription:
Mettre cela dans votre manifeste
Créer
MyBTReceiver.class
Qui était la plus simple Récepteur de radiodiffusion.
Maintenant,
si vous êtes uniquement intéressé par la réception d'une émission pendant que vous êtes en cours d'exécution, il est préférable d'utiliser registerReceiver(). Vous pouvez également registre dans votre fichier de classe. vous devez également se désinscrire il
onDestroy()
.ici, vous n'avez pas besoin de toute émission d'inscription dans le manifeste à l'exception de l'activité d'enregistrement
Par exemple
Dans les deux cas
BroadcastReceiver
sera étendu. Dans ton deuxième exemple, on crée donc appelé la classe anonyme. Nouvelle classe n'a pas de nom spécifique, c'est pourquoi il est appelé ainsi. De toute façon cette nouvelle classe s'étendBroadcastReceiver
et remplaceonReceive()
méthode.Maintenant, revenons à votre question. Il existe deux types de récepteurs - statiquement et dynamiquement définis.
Si vous déclarez votre récepteur dans le fichier AndroidManifest, alors il est définis de manière statique. Dans ce cas, vous devez faire référence à une classe de mise en œuvre de BroadcastReceiver par son nom. Comme vous pouvez le voir, vous ne pouvez pas utiliser une classe anonyme, parce que la dernière n'a pas de nom. Vous devez explicitement de mettre en œuvre un récepteur. Il vaut la peine de mentionner que dans ce cas, vous ne pas utiliser
registerReceiver()
méthode. Android le fait pour vous automatiquement.Si vous déclarez des récepteurs dynamiquement (par exemple dans l'activité de
onResume()
méthode), alors vous pouvez utiliser la classe anonyme. Pour enregistrer un récepteur que vous appelezregisterReceiver()
méthode. Vous pouvez également utiliser un nom de classe. Les deux options sont valables dans ce cas.De l'espoir c'est ce qui explique la différence.
Dans les deux cas, vous êtes de la création de l'objet.Mais dans le premier cas, il n'y a aucune référence pour
l'objet récepteur de sorte qu'il ne peut pas être non plus tard, mais la seconde a de sorte qu'il peut être
non, après l'enregistrement de l'objet à l'aide ci-dessous méthodes: