Eu encontrei esse termo na documentação do Android com a definição que o acompanha
Esses são broadcasts cujos dados são mantidos pelo sistema após serem concluídos, para que os clientes possam recuperar rapidamente esses dados sem ter que esperar pelo próximo broadcast.
O que isso significa? Alguém pode elaborar seu uso com um exemplo particular? Acredito que devemos solicitar permissão para usar esta intenção Por quê então?
<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
android
android-intent
Shouvik
fonte
fonte
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.
Respostas:
Se uma atividade ligar
onPause
com uma transmissão normal, a recepção da transmissão pode ser perdida. Uma transmissão persistente pode ser verificada após ter sido iniciada emonResume
.Atualização 23/06/2020
As transmissões fixas estão obsoletas.
Veja a
sendStickyBroadcast
documentação .Implemento
Recursos
Postagem relacionada: Qual é a diferença entre sendStickyBroadcast e sendBroadcast no Android?
Consulte
removeStickyBroadcast(Intent)
, e no API Nível 5 +,isInitialStickyBroadcast()
para uso no receptoronReceive
.fonte
sendStickyBroadcast()
executa umsendBroadcast(Intent)
conhecido como pegajoso, ou seja, o Intent que você está enviando permanece após a conclusão da transmissão, para que outros possam recuperar rapidamente esses dados por meio do valor de retorno deregisterReceiver(BroadcastReceiver, IntentFilter)
. Em todas as outras formas, ele se comporta da mesma forma quesendBroadcast(Intent)
. Um exemplo de transmissão persistente enviada por meio do sistema operacional éACTION_BATTERY_CHANGED
. Quando você chamaregisterReceiver()
essa ação - mesmo com um nuloBroadcastReceiver
- você obtém o intent que foi transmitido pela última vez para essa ação. Portanto, você pode usar isso para encontrar o estado da bateria sem necessariamente registrar todas as mudanças futuras de estado da bateria.fonte
O valor de uma transmissão permanente é o valor que foi transmitido pela última vez e atualmente é mantido no cache permanente. Este não é o valor de uma transmissão que foi recebida agora. Suponho que você possa dizer que é como um cookie do navegador que você pode acessar a qualquer momento. A transmissão persistente agora está obsoleta, de acordo com os documentos para métodos de transmissão fixa ( por exemplo ):
fonte
Um Intent de transmissão normal não está mais disponível após ser enviado e processado pelo sistema. Se você usar o método sendStickyBroadcast (Intent), o Intent ficará fixo, o que significa que o Intent que você está enviando permanece após a conclusão da transmissão.
você se refere ao meu blog: insira a descrição do link aqui
fonte