Android : Qu'est-ce qu'un « Sticky Broadcast » (broadcast persistant) ?
Un broadcast persistant (sticky broadcast) est un outil que les développeurs Android utilisent pour communiquer entre applications. Ces diffusions se font sans notification de l'utilisateur. L'OS Android traite normalement chaque application comme un utilisateur distinct. Les apps s'exécutent indépendamment et isolées, sur machines virtuelles séparées, n'utilisant que les composants matériels nécessaires. Cela assure une sécurité forte, mais parfois les apps doivent partager des infos : les broadcasts persistants sont une solution pour transmettre l'info d'une app à une autre.
Broadcasts (diffusions)
Les broadcasts sont des annonces envoyées aux apps Android, sans que l'utilisateur en soit conscient. L'OS initie la plupart, mais les apps individuelles peuvent aussi en émettre. Exemple : quand la batterie est faible ou l'écran s'éteint, une annonce part vers toutes les applications. Si une app reçoit une donnée disponible pour d'autres, elle les en informe. Pour atteindre les apps, l'annonce doit d'abord passer par un récepteur de broadcast (composant gérant les messages broadcast).
Intents Android
À cause de la séparation qu'Android impose entre apps, tous les broadcasts passent par l'OS. Une app ne peut pas contacter directement le récepteur d'une autre. Quand une app veut envoyer un broadcast, elle notifie l'OS via un Intent. Un Intent est un message pour activer une app ou un de ses composants (ex: le récepteur). L'Intent définit simplement le message à diffuser (batterie faible, demande d'accès à une photo).
Sticky Broadcasts (broadcasts persistants)
Un broadcast normal atteint son récepteur puis se termine. Un broadcast persistant reste « collé » pour notifier d'autres apps si elles ont besoin de la même info — ex: batterie maintenant pleinement chargée. Quand vous enregistrez une nouvelle app ayant besoin de l'info, ou qu'une app inactive est lancée, le sticky broadcast lui est envoyé. Un nouveau sticky broadcast avec info mise à jour sur le même sujet réécrit l'ancien.
Considérations
Une app ne peut envoyer ou supprimer un sticky broadcast que si son code inclut la permission correspondante. La sécurité des sticky broadcasts n'est pas aussi stricte que pour les broadcasts normaux. N'importe quelle app peut potentiellement écraser le sticky d'une autre. Un avantage de l'Intent (sticky ou non) : vous pouvez spécifier quelles apps doivent le recevoir, mais ce n'est pas obligatoire. Android détermine les bonnes apps destinataires selon le filtrage programmé dans chaque app.
