1.为什么需要广播机制呢?松耦合
2.广播的发送和处理是异步进行的。
3.Sticky broadcast:我们在最后一次调用sendStickyBroadcast函数来发送某个Action类型的广播时,系统会把代表这个广播的Intent保存下来,
这样,后来调用registerReceiver来注册相同Action类型的广播接收器,就会得到这个最后发出的广播。这就是为什么叫做Sticky Intent了,
这个最后发出的广播虽然被处理完了,但是仍然被粘住在ActivityManagerService中,以便下一个注册相应Action类型的广播接收器还能继承处理
。
4.注册的时候不会排序,因为一个广播接收者可以注册接收多种类型的广播,而且广播发送者还可以拒绝将广播发送给某些广播接收者,
因此,需要在发送广播的时候,再实时收集以及排序目标广播接收者。
5.广播优先级设置:官方说优先级的设置范围是-1000到1000,但是源码中好像没看到有这个限制,仅仅是2个int型在做比较,实际的优先级范围应该是+-2147483647
6.
1. 找到静态注册的广播接收者,存在有一个列表里面,并且已经是按照优先级排好序了的。
2. 找到动态注册的广播接收者,也是存在一个列表里面,也是已经按照优先级排好序了的。
3. 对上面两个列表的广播接收者进行合并,合并的规则是优先级高的排在前面,优先级低的排在后面。如果一个静态注册的广播接收者的优先级和一个动态注册的广播接收者的优先级一样,那么动态注册的广播接收者排在前面。
对所有的广播接收者排好序之后,就可以依次把广播发送它们了。
7.安装360后,监听短信的广播,发现监听不到,因为360拦截到短信广播后,abort了广播。
8.监听应用自身卸载:
1.广播?应用已经卸载,收不到广播
2.用Jni fork一个进程,进程监听data/data/packagename/lib