Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is this possible to check if a broadcast was sent in sticky mode? Can it be aborted/removed?

Is this possible to check if a broadcast was sent in sticky mode?

Can we completely abort/remove a sticky broadcast? If yes, then can it be done for both normal and ordered broadcasts?

like image 897
blackfyre Avatar asked Aug 06 '12 07:08

blackfyre


1 Answers

In onReceive() you can use the following calls:

isInitialStickyBroadcast() - This will tell you if the broadcast you are currently processing was sent as "sticky" and was the current one when the BroadcastReceiver was registered.

isOrderedBroadcast() - This will tell you if the broadcast you are currently processing was sent as an "ordered" broadcast.

If you just want to see if there is a "sticky" broadcast, you can call

registerReceiver (BroadcastReceiver receiver, IntentFilter filter)

and supply null as the receiver parameter. This will return any "sticky" broadcast without actually registering the receiver.

You can remove a sticky broadcast using:

removeStickyBroadcast(Intent intent)

However, IMHO that would be counter-productive. Usually "sticky" broadcasts are sent to indicate the current state of something. So removing it would imply that it isn't possible for an application to determine the current state.

like image 94
David Wasser Avatar answered Sep 30 '22 17:09

David Wasser