Is this possible to check if a broadcast was sent

2020-07-03 07:26发布

问题:

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?

回答1:

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.