qual è la differenza tra sendStickyBroadcast e sendBroadcast in Android


Risposte:


120

Ecco cosa dice l'SDK di AndroidsendStickyBroadcast() :

Esegui un sendBroadcast (Intent) che è "persistente", il che significa che l'Intent che stai inviando rimane in giro dopo il completamento della trasmissione, in modo che altri possano recuperare rapidamente quei dati attraverso il valore di ritorno di registerReceiver (BroadcastReceiver, IntentFilter). In tutti gli altri modi, si comporta come sendBroadcast (Intent).

Un esempio di una trasmissione persistente inviata tramite il sistema operativo è ACTION_BATTERY_CHANGED. Quando chiami registerReceiver()per quell'azione, anche con a null BroadcastReceiver, ottieni l' Intentultima trasmissione per quell'azione. Quindi, è possibile utilizzarlo per trovare lo stato della batteria senza necessariamente registrarsi per tutti i futuri cambiamenti di stato della batteria.


6
Quanto è appiccicoso l'intento? Quando chiami registerReceiver una seconda volta, restituisce di nuovo lo stesso intento? (Presumendo nessun intento supplementare con quell'azione.)
phreed

22
@phreed: "Quando chiami registerReceiver una seconda volta, restituisce di nuovo lo stesso intento?" -- sì. "spegnimento?" - scompaiono, proprio come fa qualsiasi cosa nella RAM. "schermo spento?" -- nessun effetto.
CommonsWare

1
Solo per aggiungere che le trasmissioni persistenti sono severamente scoraggiate dalla sig.ra Hackborn: groups.google.com/d/msg/android-developers/8341SaXhvmY/… . È un vecchio post ma probabilmente si applica ancora
Mr_and_Mrs_D

1
@ Commonsware: non riesco a capire i tuoi punti Spiega con un normale esempio di intento e con un esempio di intento appiccicoso per lo stesso scenario, quindi mi sarà utile avere un'idea chiara
SIVAKUMAR.J

4
@ Kushal: "Allora quale dovrebbe essere l'alternativa per la trasmissione appiccicosa ora?" - Non posso davvero rispondere, perché non so quale sia il tuo caso d'uso. Potresti considerare di porre una nuova domanda Stack Overflow, in cui descrivi i tuoi requisiti aziendali, spieghi come pensavi di risolverli tramite trasmissioni persistenti e chiedi modi alternativi per risolvere lo stesso problema.
CommonsWare

54

Tipi : - Locale, normale, ordinato e appiccicoso

Trasmissione normale

: - usa sendBroadcast ()

: - trasmissione asincrona

: - qualsiasi ricevitore riceve la trasmissione non un ordine particolare

Trasmissione ordinata

: - usa sendOrderedBroadcast ()

: - trasmissione sincrona

: - il ricevitore riceve la trasmissione in base prioritaria

: - Possiamo anche semplicemente interrompere la trasmissione in questo tipo

Trasmissione locale

: - utilizzare solo quando la trasmissione viene utilizzata solo all'interno dello stesso processo

Trasmissione persistente

: - Il normale intento di trasmissione non è più disponibile dopo che questo è stato inviato ed elaborato dal sistema.

: - usa sendStickyBroadcast (Intent)

: - l'intento corrispondente è appiccicoso, il che significa che l'intento che stai inviando rimane in giro dopo che la trasmissione è completa.

: - per questo motivo altri possono recuperare rapidamente quei dati attraverso il valore di ritorno di registerReceiver (BroadcastReceiver, IntentFilter).

: - a parte questo lo stesso di sendBroadcast (Intent).


molto utile ..
Maher Abuthraa

10

sendbroadcast() - trasmissione normale, ma possiamo anche impostare la priorità.

sendstickybroadcast()- L'intento passato con questo sarà stick per i futuri utenti che si registrano tramite codice (ricevitori dinamici). La trasmissione che rimarrà su Android e verrà riconsegnata o ritrasmessa alle future richieste da qualsiasi ricevente di trasmissione

Quando qualcuno invia una trasmissione persistente utilizzando, sendstickyBroadcast(intent);quella trasmissione sarà disponibile per i futuri utenti che utilizzano ricevitori dinamici.

Ma ora non dovresti usare il sendStickyBroadcast()metodo è deprecato

Dalla documentazione Android:

Questo metodo è stato deprecato nel livello API 21. Le trasmissioni persistenti non dovrebbero essere utilizzate. Non forniscono sicurezza (chiunque può accedervi), nessuna protezione (chiunque può modificarli) e molti altri problemi. Lo schema consigliato è utilizzare una trasmissione non appiccicosa per segnalare che qualcosa è cambiato, con un altro meccanismo per le app per recuperare il valore corrente ogni volta che lo si desidera

Spero che aiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.