¿Qué es una emisión pegajosa?

Me encontré con este término en la documentación de Android con la definición adjunta

Se trata de emisiones cuyos datos son retenidos por el sistema una vez finalizado, de modo que los clientes puedan recuperar rápidamente esos datos sin tener que esperar a la próxima emisión.

Qué significa eso? ¿Puede alguien elaborar su uso con un ejemplo particular? Creo que tenemos que pedir permiso para usar esta intención? ¿Porque?

<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents. 

Por favor, lea la explicación de Mark Murphy aquí: ¿cuál es la diferencia entre sendStickyBroadcast y sendBroadcast en Android

He aquí un ejemplo abstracto de cómo se podría usar una emisión pegajosa:

 Intent intent = new Intent("some.custom.action"); intent.putExtra("some_boolean", true); sendStickyBroadcast(intent); 

Si está escuchando esta emisión en una actividad que estaba congelada (onPause), podría perder el evento real. Esto le permite comprobar la emisión después de que se disparó (onResume).

EDIT: Más sobre emisiones pegajosas …

También echa un vistazo a removeStickyBroadcast(Intent) , y en API Level 5 +, isInitialStickyBroadcast() para su uso en el receptor onReceive .

Espero que ayude.

Observe por favor que las emisiones pegajosas son pesadas en el sistema y se desalientan. Por favor, lea la nota de hackbod en la discusión sobre 'Sticky Broadcasts y Concurrency Options' en el grupo de desarrolladores de Android.

@Shouvik, Por favor, especifique el escenario exacto en el que está considerando utilizar StickyBroadcasts. Alguien puede sugerir una solución alternativa.

El valor de una emisión pegajosa es el valor que se difundió por última vez y se mantiene actualmente en la caché pegajosa. Este no es el valor de una transmisión que se recibió en este momento. Supongo que puedes decir que es como una cookie de navegador a la que puedes acceder en cualquier momento. La emisión pegajosa ahora está obsoleta:

Este método fue obsoleto en el nivel de API 21. No se deben utilizar emisiones pegajosas. No proporcionan ninguna seguridad (cualquier persona puede tener acceso a ellos), ninguna protección (cualquier persona puede modificarlos), y muchos otros problemas. El patrón recomendado es utilizar una emisión no pegajosa para informar que algo ha cambiado, con otro mecanismo para que las aplicaciones recuperen el valor actual cuando se desee.

sendStickyBroadcast() realiza un sendBroadcast(Intent) conocido como pegajoso, es decir, el Intent que está enviando permanece después de que la transmisión está completa, para que otros puedan recuperar rápidamente los datos a través del valor de retorno de registerReceiver(BroadcastReceiver, IntentFilter) . En otras formas, esto se comporta igual que sendBroadcast(Intent) . Un ejemplo de una emisión pegajosa enviada a través del sistema operativo es ACTION_BATTERY_CHANGED . Cuando llama a registerReceiver() para esa acción – incluso con un BroadcastReceiver nulo – obtiene el Intent que fue difundido por última vez para esa acción. Por lo tanto, puede utilizar esto para encontrar el estado de la batería sin necesariamente registrarse para todos los futuros cambios de estado en la batería.

Una Intención de difusión normal ya no está disponible después de que el sistema envió y procesó. Si utiliza el método sendStickyBroadcast (Intent), el Intent es pegajoso, lo que significa que el Intent que está enviando permanece después de que la transmisión se ha completado.

Te refieres a mi blog: introduce la descripción del enlace aquí

  • Mi WearableListenerService no se inicia cuando se reinicia Android
  • OnActivityResult no se llama a un dispositivo Android, sino que está en otro
  • Se muestra una pantalla blanca mientras se cambia entre Actividades
  • La eliminación de una entrada de un paquete (es decir, extras) no parece funcionar en combinación con el botón de retroceso
  • Terminar una llamada entrante mediante programación en android
  • Diferencia entre el inicio de la categoría y el lanzador de categorías
  • Compruebe la conexión a Internet de INTENT
  • Modificar permanentemente el Intent que inició una Actividad
  • Integración de Google + en la vista web
  • ActivityNotFoundException: Ninguna actividad encontrada para manejar Intent
  • La intención de la cámara devuelve una imagen pequeña
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.