Quelle est la différence entre sendStickyBroadcast
et sendBroadcast
dans Android?
Quelle est la différence entre sendStickyBroadcast
et sendBroadcast
dans Android?
Voici ce que dit le SDK AndroidsendStickyBroadcast()
:
Effectuez un sendBroadcast (Intent) qui est «permanent», ce qui signifie que l'intention que vous envoyez reste 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). Dans tous les autres cas, 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 la Intent
dernière diffusion pour cette action. Par conséquent, vous pouvez l'utiliser pour trouver l'état de la batterie sans nécessairement vous enregistrer pour tous les futurs changements d'état de la batterie.
Types : - Local, normal, ordonné et collant
Diffusion normale
: - utilisez sendBroadcast ()
: - diffusion asynchrone
: - tout récepteur reçoit une émission pas un ordre particulier
Diffusion commandée
: - utilisez sendOrderedBroadcast ()
: - diffusion synchrone
: - le récepteur reçoit la diffusion en base prioritaire
: - on peut aussi simplement interrompre la diffusion dans ce type
Diffusion locale
: - à utiliser uniquement lorsque la diffusion est utilisée uniquement dans le même processus
Diffusion collante
: - l'intention de diffusion normale n'est plus disponible une fois qu'elle a été envoyée et traitée par le système.
: - utilisez sendStickyBroadcast (Intent)
: - l'intention correspondante est persistante, ce qui signifie que l'intention que vous envoyez reste une fois la diffusion terminée.
: - à cause de cela, d'autres peuvent récupérer rapidement ces données via la valeur de retour de registerReceiver (BroadcastReceiver, IntentFilter).
: - à part cela même que sendBroadcast (Intent).
la source
sendbroadcast()
- diffusion normale, mais nous pouvons également définir la priorité.sendstickybroadcast()
- l'intention passée avec ceci sera valable pour les futurs utilisateurs qui s'inscriront par code (récepteurs dynamiques). L'émission qui restera avec Android et sera rediffusée ou rediffusée aux futures demandes de tous les récepteurs de diffusionLorsque 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
sendStickyBroadcast()
méthode, elle est obsolèteDepuis la documentation Android:
J'espère que ça aide.
la source