Quelle est la différence entre sendStickyBroadcast
et sendBroadcast
dans Android?
Voici ce que dit le Android SDK à propos de sendStickyBroadcast()
:
Effectuez un sendBroadcast (Intent) "collant", ce qui signifie que l'intention que vous envoyez est conservée une fois la diffusion terminée, afin que d'autres puissent récupérer rapidement ces données via la valeur de retour de registerReceiver (BroadcastReceiver, IntentFilter). À tous autres égards, cela se comporte de la même manière que sendBroadcast (Intent).
Un exemple de diffusion persistante envoyée via le système d'exploitation est ACTION_BATTERY_CHANGED
. Lorsque vous appelez registerReceiver()
pour cette action - même avec un null
BroadcastReceiver
, vous obtenez le Intent
qui a été diffusé pour la dernière fois pour cette action. Par conséquent, vous pouvez utiliser ceci pour trouver l'état de la batterie sans nécessairement enregistrer tous les changements d'état futurs de la batterie.
Types: - Local, Normal, Commandé et Collant
diffusion normale
: - utilise sendBroadcast ()
: - diffusion asynchrone
: - tout récepteur reçoit une émission et non une commande particulière
diffusion ordonnée
: - utilise sendOrderedBroadcast ()
: - diffusion synchrone
: - récepteur reçoit la diffusion en base prioritaire
: - on peut aussi simplement abandonner la diffusion dans ce type
diffusion locale
: - à utiliser uniquement lorsque broadcast est utilisé uniquement dans le même processus
diffusion collante
: - l'intention de diffusion normale n'est plus disponible après son envoi et son traitement par le système.
: - utilise sendStickyBroadcast (Intent)
: - l'intention correspondante est collante, c'est-à-dire que l'intention que vous envoyez reste valable une fois la diffusion terminée.
: - de ce fait, d’autres peuvent rapidement extraire ces données grâce à la valeur de retour registerReceiver (BroadcastReceiver, IntentFilter).
: - en dehors de cela, comme sendBroadcast (Intent).
sendbroadcast()
- diffusion normale, mais nous pouvons également définir la priorité.
sendstickybroadcast()
- l'intention transmise avec ce paramètre restera valable pour les futurs utilisateurs qui s'enregistrent via du code (récepteurs dynamiques). La diffusion qui restera avec Android et sera rediffusée ou rediffusée pour les futures demandes de tous les récepteurs de diffusion
Quand quelqu'un envoie une diffusion persistante en utilisant sendstickyBroadcast(intent);
, cette diffusion sera disponible pour les futurs utilisateurs qui utilisent des récepteurs dynamiques.
Mais maintenant, vous ne devriez pas utiliser la méthode sendStickyBroadcast()
, elle est obsolète
De Android Documentation:
Cette méthode était obsolète au niveau 21 de l'API. Les diffusions collantes ne doivent pas être utilisées. Ils ne fournissent aucune sécurité (personne ne peut y accéder), aucune protection (tout le monde peut les modifier) et bien d'autres problèmes. Le modèle recommandé consiste à utiliser une diffusion non collante pour signaler que quelque chose a changé, avec un autre mécanisme permettant aux applications de récupérer la valeur actuelle à tout moment.
J'espère que ça aide.