普通的sendBroadcast()发送广播时,如果某些应用在发送前并没有进行注册监听,那么该广播讲不被接收到;为了保证任意时刻应用注册监听该广播时,都能接收到(不用考虑先后问题(时序)),那么,使用sendStickyBroadcast()是一个优雅的办法。
sendStickyBroadcast的工作原理时,系统会保持这个广播,当系统检测到某个应用调用registerBroadcast(filter,receiver)监听该广播时,如果之前已经有发送该广播,则该应用注册成功后,会立即收到这个广播(即注册一个,立即会收到该广播)。
如果要移除之前发送的sticky广播,只需执行removeStickyBroadcast(new Intent("com.xxx.acton“),只需指定action即可。
注:要是用sendStickyBroadcast(),记得在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.BROADCAST_STICKY" />