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

后端 未结 1 1279
太阳男子
太阳男子 2021-02-19 18:20

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 ord

1条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-02-19 18:48

    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.

    0 讨论(0)
提交回复
热议问题