Quelle est la différence entre sendStickyBroadcast et sendBroadcast sur Android
Quelle est la différence entre sendStickyBroadcast
et sendBroadcast
sur Android?
3 réponses
voici ce que le SDK Android dit à propos de sendStickyBroadcast()
:
effectuer un sendBroadcast(intention) qui est "collant", ce qui signifie L'intention que vous envoyer des séjours après le la diffusion est complète, de sorte que d'autres peut rapidement récupérer ces données à travers la valeur de retour de registerReceiver (BroadcastReceiver), IntentFilter). De toutes les autres façons, ceci le même comportement que sendBroadcast (intention).
un exemple d'émission collante envoyée via le système d'exploitation est ACTION_BATTERY_CHANGED
. Quand 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 l'utiliser pour trouver l'état de la batterie sans nécessairement l'enregistrement pour tous les futurs changements d'état de la batterie.
Types : - locaux, normaux, commandés et collants
Diffusion Normale
:- utiliser sendBroadcast()
: - diffusion asynchrone
: - tout récepteur reçoit une émission non pas un ordre particulier
Diffusion Ordonnée
:- utiliser sendOrderedBroadcast()
:- émission synchrone
: - le récepteur reçoit l'émission en base prioritaire
: - nous pouvons aussi simplement annuler la diffusion dans ce type
Diffusion Locale
: - à utiliser uniquement lorsque la radiodiffusion est utilisée uniquement à l'intérieur du même procédé
Collante Émission
:- la diffusion de l'intention n'est plus disponible après que cela a été envoi et traitement par le système.
: - use sendStickyBroadcast (intention)
: - l'intention correspondante est collante, ce qui signifie que l'intention que vous envoyez reste autour après l'émission est terminée.
: - à cause de cela d'autres peuvent rapidement récupérer ces données par la valeur de retour de registerReceiver(BroadcastReceiver, IntentFilter).
: - en dehors de cela même que sendBroadcast(intention).
sendbroadcast()
- diffusion normale, mais on peut aussi fixer des priorités.
sendstickybroadcast()
- l'intention passée avec ce sera bâton pour les futurs utilisateurs qui s'inscrivent par le code (récepteurs dynamiques).
L'émission qui sera compatible avec android, et sera retransmise ou rediffusée à la demande future de tout récepteur de diffusion
quand quelqu'un envoie une émission collante en utilisant sendstickyBroadcast(intent);
alors cette émission sera disponible pour les futurs utilisateurs qui utilisent des récepteurs dynamiques.
mais maintenant vous ne devez pas utiliser sendStickyBroadcast()
méthode il est déprécié
De La Documentation Android:
cette méthode a été dépréciée au niveau 21 de L'API. Collant émissions devraient pas être utilisé. Ils ne fournissent aucune sécurité (n'importe qui peut y accéder), Non protection (n'importe qui peut les modifier), et de nombreux autres problèmes. Le le modèle recommandé est d'utiliser une émission non collante pour signaler que quelque chose a changé, avec un autre mécanisme pour les applications à récupérer le valeur actuelle lorsque désiré
j'espère que cela aidera.