2010-04-06 9 views

Respuesta

110

Here is what the Android SDK says about sendStickyBroadcast():

Realizar una sendBroadcast (Intención) que es "pegajosa", que significa que la intención que está enviando estancias alrededor después de la difusión se ha completado, por lo que los demás puede recuperar rápidamente que los datos a través de el valor de retorno de registerReceiver (BroadcastReceiver, IntentFilter). En todos los demás aspectos, este se comporta igual que sendBroadcast (Intención).

Un ejemplo de emisión fija enviada a través del sistema operativo es ACTION_BATTERY_CHANGED. Cuando llame al registerReceiver() para esa acción, incluso con un nullBroadcastReceiver, obtendrá el Intent que se emitió por última vez para esa acción. Por lo tanto, puede usar esto para encontrar el estado de la batería sin registrarse necesariamente para todos los cambios de estado futuros en la batería.

+6

¿Cuán pegajoso es el intento? Cuando llama a registerReceiver por segunda vez, ¿devuelve el mismo intento nuevamente? (Presumiendo que no hay intención adicional con esa acción). – phreed

+0

¿Qué sucede con las intenciones adhesivas: apagado? ¿pantalla apagada? etc. – phreed

+20

@phreed: "Cuando llamas a registerReceiver por segunda vez ¿devuelve el mismo intento de nuevo?" - si. "¿corriente cortada?" - Se van, al igual que cualquier cosa en la memoria RAM. "¿pantalla apagada?" -- sin efecto. – CommonsWare

37

Tipos: - local, normal, ordenada y pegajoso

emisión normal

: - utilizar sendBroadcast()

: - emisión asíncrona

: - cualquier receptor no recibe ninguna orden en particular

ordenada Broadcast

: - utilizar sendOrderedBroadcast()

: - emisión sincrónica

: - receptor recibe emite en base de prioridad

: - también podemos simplemente interrumpir la emisión de este tipo

Local Broadcast

: - utilizar sólo cuando se utiliza sólo en el interior de difusión mismo proceso

pegajosa Broadcast

: - la intención emisión normal no está disponible más después de que se fue enviar y procesada por el sistema.

: - utilizar sendStickyBroadcast (Intención)

: - la intención correspondiente es pegajosa, es decir, la intención que está enviando estancias alrededor después de la emisión se ha completado.

: - debido a esto, otros pueden recuperar rápidamente esos datos a través del valor de retorno de registerReceiver (BroadcastReceiver, IntentFilter).

: - salvo lo mismo que sendBroadcast (Intención).

9

sendbroadcast() - transmisión normal, pero podemos establecer la prioridad también.

sendstickybroadcast() - La intención aprobada con esto se aplicará a los futuros usuarios que se registren a través del código (receptores dinámicos). La difusión que se quede con el androide, y se volverá a entregar o retransmitido a las futuras solicitudes de cualquier receptores de radiodifusión

Cuando alguien envía una emisión persistente utilizando sendstickyBroadcast(intent); entonces que la emisión estará disponible para los futuros usuarios que están usando receptores dinámicos.

pero ahora no se debe utilizar sendStickyBroadcast() método que está en desuso

De Documentación Android:

Este método está desfasada y en el nivel API 21. emisiones persistentes deben no se pueden utilizar. No proporcionan seguridad (cualquiera puede acceder a ellos), no hay protección (cualquiera puede modificarlos) y muchos otros problemas. El patrón recomendado es utilizar una emisión que no se pega a informar que algo ha cambiado, con otro mecanismo para aplicaciones para recuperar el valor actual siempre que se desee

espero que esto ayude.

Cuestiones relacionadas