Encontré este término en la documentación de Android con la definición adjunta
Se trata de transmisiones cuyos datos se mantienen en el sistema después de haber finalizado, de modo que los clientes pueden recuperar rápidamente esos datos sin tener que esperar a la siguiente transmisión.
Qué significa eso? ¿Alguien puede elaborar su uso con un ejemplo en particular? Creo que tenemos que solicitar un permiso para usar esta intención. ¿Porque?
<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
android
android-intent
Shouvik
fuente
fuente
Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.
Respuestas:
Si una actividad llama
onPause
con una transmisión normal, es posible que se pierda la recepción de la transmisión. Una transmisión fija se puede verificar después de que se inició enonResume
.Actualización 23/6/2020
Las transmisiones fijas están en desuso.
Ver
sendStickyBroadcast
documentación .Implementar
Intent intent = new Intent("some.custom.action"); intent.putExtra("some_boolean", true); sendStickyBroadcast(intent);
Recursos
Publicación relacionada: ¿Cuál es la diferencia entre sendStickyBroadcast y sendBroadcast en Android?
Consulte
removeStickyBroadcast(Intent)
y en API Nivel 5 +,isInitialStickyBroadcast()
para conocer el uso en Receiver'sonReceive
.fuente
sendStickyBroadcast()
realiza unsendBroadcast(Intent)
conocido como pegajoso, es decir, el Intent que está enviando permanece 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 deregisterReceiver(BroadcastReceiver, IntentFilter)
. De todas las demás formas, esto se comporta igual quesendBroadcast(Intent)
. Un ejemplo de una transmisión permanente enviada a través del sistema operativo esACTION_BATTERY_CHANGED
. Cuando pidesregisterReceiver()
esa acción, incluso con un nuloBroadcastReceiver
, obtienes el Intent que se transmitió por última vez para esa acción. Por lo tanto, puede usar esto para encontrar el estado de la batería sin necesariamente registrarse para todos los cambios de estado futuros en la batería.fuente
El valor de una transmisión permanente es el valor que se transmitió por última vez y se encuentra actualmente en la memoria caché permanente. Este no es el valor de una transmisión que se recibió en este momento. Supongo que puede decir que es como una cookie del navegador a la que puede acceder en cualquier momento. La transmisión permanente ahora está obsoleta, según los documentos para los métodos de transmisión permanente ( p . Ej. ):
fuente
Una intención de transmisión normal ya no está disponible después de que el sistema la haya enviado y procesado. Si usa el método sendStickyBroadcast (Intent), el Intent es pegajoso, lo que significa que el Intent que está enviando permanece después de que se completa la transmisión.
se refiere a mi blog: ingrese la descripción del enlace aquí
fuente