Quelle est la différence entre sendStickyBroadcast et sendBroadcast sur Android

Quelle est la différence entre sendStickyBroadcast et sendBroadcast sur Android?

96
demandé sur Steven Byle 2010-04-06 15:42:25

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.

113
répondu CommonsWare 2010-04-06 12:22:57

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).

41
répondu Umang Kothari 2018-03-30 02:36:02

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.

9
répondu Rajesh 2015-12-21 12:16:18