Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 23
Création de filtres d’intentions 247
Récepteurs d’intention
Dans les exemples que nous venons de voir, les filtres d’intention étaient configurés sur
des activités. Cependant, lier les intentions à des activités n’est parfois pas exactement ce
dont on a besoin :
● Certains événements système peuvent nous obliger à déclencher une opération dans un
service plutôt qu’une activité.
● Certains événements peuvent devoir lancer des activités différentes en fonction des
circonstances, où le critère repose non pas uniquement sur l’intention elle-même, mais
sur un autre état (si l’on obtient l’intention X et que la base de données contienne Y, on
lance l’activité M ; si la base ne contient pas Y, on lance l’activité N, par exemple).
Dans ces situations, Android offre un récepteur d’intention défini comme une classe qui
implémente l’interface BroadcastReceiver. Les récepteurs d’intention sont des objets
conçus pour recevoir des intentions – notamment celles qui sont diffusées – et pour effectuer une action impliquant généralement le lancement d’autres intentions pour déclencher
une opération dans une activité, un service ou un autre composant.
L’interface BroadcastReceiver ne possède qu’une seule méthode onReceive(), que les
récepteurs d’intention doivent donc implémenter pour y effectuer les traitements qu’ils
souhaitent en cas de réception d’une intention. Pour déclarer un récepteur d’intention, il
suffit d’ajouter un élément receiver au fichier AndroidManifest.xml :
exemple). Cependant, dans cette situation, vous ne pouvez pas déclarer le récepteur dans
AndroidManifest.xml : il faut appeler registerReceiver() dans la méthode onResume()
de l’activité pour annoncer son intérêt pour une intention, puis appeler unregisterReceiver() dans sa méthode onPause() lorsque vous n’avez plus besoin de ces intentions.
Attention à la pause
Il y a un petit problème lorsque l’on utilise des objets Intent pour transmettre des messages : ceci ne fonctionne que lorsque le récepteur est actif. Voici ce que précise la documentation de BroadcastReceiver à ce sujet :
Livre Android.book Page 247 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 262/391

Suivant