Qual é a diferença entre sendStickyBroadcast
e sendBroadcast
no Android?
fonte
Qual é a diferença entre sendStickyBroadcast
e sendBroadcast
no Android?
Aqui está o que o Android SDK diz sobresendStickyBroadcast()
:
Execute um sendBroadcast (Intent) que é "fixo", o que significa que 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 de registerReceiver (BroadcastReceiver, IntentFilter). Em todas as outras formas, ele se comporta da mesma forma que sendBroadcast (Intent).
Um exemplo de transmissão persistente enviada por meio do sistema operacional é ACTION_BATTERY_CHANGED
. Quando você chama registerReceiver()
para aquela ação - mesmo com um null
BroadcastReceiver
- você obtém a Intent
última transmissão para aquela 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.
Tipos : - Local, Normal, Ordenado e Fixo
Transmissão normal
: - use sendBroadcast ()
: - transmissão assíncrona
: - qualquer receptor recebe transmissão e não uma ordem particular
Transmissão ordenada
: - use sendOrderedBroadcast ()
: - transmissão síncrona
: - receptor recebe transmissão em base prioritária
: - também podemos simplesmente abortar a transmissão neste tipo
Transmissão Local
: - use apenas quando a transmissão for usada apenas dentro do mesmo processo
Sticky Broadcast
: - a intenção de transmissão normal não está mais disponível após ter sido enviada e processada pelo sistema.
: - use sendStickyBroadcast (Intent)
: - o intent correspondente é fixo, o que significa que o intent que você está enviando permanece após a conclusão da transmissão.
: - por causa disso, outros podem recuperar rapidamente esses dados por meio do valor de retorno de registerReceiver (BroadcastReceiver, IntentFilter).
: - além deste mesmo que sendBroadcast (Intent).
fonte
sendbroadcast()
- transmissão normal, mas podemos definir a prioridade também.sendstickybroadcast()
- a intenção passada com isso será válida para futuros usuários que estão se registrando por meio de código (receptores dinâmicos). A transmissão que ficará com o Android e será retransmitida ou retransmitida para solicitações futuras de quaisquer receptores de transmissãoQuando alguém envia uma transmissão fixa usando,
sendstickyBroadcast(intent);
então, essa transmissão estará disponível para os futuros usuários que estiverem usando receptores dinâmicos.Mas agora você não deve usar o
sendStickyBroadcast()
método, ele está obsoletoDa documentação do Android:
Eu espero que isso ajude.
fonte