¿Cuál es la diferencia entre sendStickyBroadcast y sendBroadcast en Android

¿Cuál es la diferencia entre sendStickyBroadcast y sendBroadcast en Android?

sendStickyBroadcast() es lo que dice el SDK de Android sobre sendStickyBroadcast() :

Realice sendBroadcast (Intención) que sea “adhesivo”, lo que significa que la intención que está enviando se mantiene después de que se completa la transmisión, para que otros puedan recuperar rápidamente esos datos a través del valor de retorno de registerReceiver (BroadcastReceiver, IntentFilter). En todos los demás aspectos, esto se comporta de la misma manera que sendBroadcast (Intención).

Un ejemplo de transmisión ACTION_BATTERY_CHANGED enviada a través del sistema operativo es ACTION_BATTERY_CHANGED . Cuando llama a registerReceiver() para esa acción, incluso con un BroadcastReceiver null , obtiene la 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.

Tipos : – Local, Normal, ordenado y Adhesivo

Transmisión normal

: – use sendBroadcast ()

: – difusión asincrónica

: – cualquier receptor recibe emisión no cualquier orden particular

Transmisión ordenada

: – use sendOrderedBroadcast ()

: – difusión sincrónica

: – el receptor recibe la transmisión en base de prioridad

: – también podemos simplemente cancelar la transmisión en este tipo

Transmisión local

: – usar solo cuando la transmisión se usa solo dentro del mismo proceso

Difusión pegajosa

: – el bash de transmisión normal ya no está disponible después de que el sistema lo haya enviado y procesado.

: – use sendStickyBroadcast (Intento)

: – el bash correspondiente es adhesivo, lo que significa que la intención que está enviando se mantiene después de que se completa la transmisión.

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

: – aparte de esto, envía sendBroadcast (Intención).

sendbroadcast() – transmisión normal, pero también podemos establecer prioridades.

sendstickybroadcast() – el bash pasado con esto se mantendrá para los futuros usuarios que se registren a través del código (receptores dynamics). La transmisión que se quedará con Android, y será reenviada o retransmitida a las futuras solicitudes de cualquier receptor de transmisión

Cuando alguien envía una transmisión adhesiva usando sendstickyBroadcast(intent); entonces esa transmisión estará disponible para los futuros usuarios que estén usando receptores dynamics.

Pero ahora no deberías usar el método sendStickyBroadcast() , está en desuso

De la documentación de Android:

Este método quedó obsoleto en el nivel de API 21. Las transmisiones fijas no deberían utilizarse. 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 transmisión no adhesiva para informar que algo ha cambiado, con otro mecanismo para que las aplicaciones recuperen el valor actual cuando lo deseen.

Espero que esto ayude.