2012-03-31 22 views
12

Estoy un poco confundido con la documentación sobre los diferentes tipos de envío de transmisiones en Android. Por ejemplo, está sendStickyBroadcast(), sendBroadcast(), sendOrderedBroadcast() y sendStickyOrderedBroadcast().diferencias entre los diferentes tipos de emisiones en android

¿Cuál es la diferencia entre una emisión fija, normal y ordenada?

Respuesta

46

Puede comparar una emisión adhesiva con una nota adhesiva. Alguien lo publica y usted puede leer cuando pasa/se inicia su aplicación, independientemente de cuándo se publicó.

Una transmisión ordenada es como pasar una nota: pasa de persona/aplicación a persona/aplicación. En cualquier lugar de la cadena, el destinatario puede optar por cancelar la transmisión evitando que el resto de la cadena la vea.

Una emisión normal ... bueno, simplemente envía a todos los que están permitidos & registrados para escucharla.

Hay una variación de emisiones que sólo permiten receptores registrados en una aplicación que se ejecuta a escuchar a ellos - es decir, un receptor en su AndroidManifest.xml se no detonante de estos Propósitos.

+1

¡buena explicación! – Akhil

+0

muy buena explicación. –

26

Transmisiones normales: -Las transmisiones normales (enviadas con Context.sendBroadcast) son completamente asincrónicas. Todos los receptores de la transmisión se ejecutan en un orden indefinido, a menudo al mismo tiempo. Esto es más eficiente, pero significa que los receptores no pueden usar el resultado o abortar las API incluidas aquí.

Emisiones ordenadas: - Difusión ordenada es el tipo de difusión que se envía de forma síncrona, es decir, una por una para cada oyente.

El método Android sendOrderedBroadcast pertenece a la clase de contexto de Android, el propósito de este método es transmitir a receptores de audio de forma serializada y recibir el resultado de vuelta a la actividad de llamada. Estuve buscando algo como Android sendOrderedBroadcast pero no pude encontrarlo. Otra ventaja clave de sendOrderedBroadcast es que podemos establecer la prioridad de BroadcastReceiver. De esta forma, todos los BroadcastReceivers que escuchan esa transmisión específica recibirán esa transmisión específica de manera ordenada. Ahora que estamos recibiendo transmisiones de una manera ordenada, puede existir un caso, cuando desee interrumpir el flujo de receptores, adivine que incluso esto se puede hacer, mediante abortBroadcast().

emisiones persistentes: - Un pegajosa de difusión es una emisión que se mantiene alrededor de seguir el momento en que se anunció al sistema. La mayoría de las transmisiones se envían, procesan dentro del sistema y se vuelven rápidamente inaccesibles. Sin embargo, Sticky Broadcasts anuncia información que permanece accesible más allá del punto en el que se procesan. Un ejemplo típico es el nivel de la batería de difusión. A diferencia de la mayoría de las transmisiones, el nivel de la batería puede recuperarse dentro de las aplicaciones más allá del punto en el que se envió a través del sistema. Esto significa que las aplicaciones pueden descubrir lo que fue la última transmisión a nivel de batería.

+0

Supongo que puede decir que las transmisiones ordenadas son sincrónicas, ya que se envían a los oyentes por prioridad. La llamada sigue siendo asíncrona (en caso de que haya confusión). – Alan

Cuestiones relacionadas