什么是Sticky Intent呢?我们在最后一次调用sendStickyBroadcast函数来发送某个Action类型的广播时,系统会把代表这个广播的Intent保存下来,这样,后来调用registerReceiver来注册相同Action类型的广播接收器,就会得到这个最后发出的广播。这就是为什么叫做Sticky Intent了,这个最后发出的广播虽然被处理完了,但是仍然被粘住在ActivityManagerService中,以便下一个注册相应Action类型的广播接收器还能继承处理。
之前有一处广播注册只要注册就会执行收到广播的流程,看了老罗博客中的以上解释,终于释然了。
补充,使用sendStickyBroadcast 发送广播需要获得BROADCAST_STICKY
permission,如果没有这个permission则会抛出异常。