注册
image.png静态注册由PMS来完成,图中是动态注册
- 通过AMS,把当前进程的ApplicationThread、InnerReceiver对象的代理类,注册到system_server进程
- 把广播添加到ReceiverList,它继承自ArrayList,这个ArrayList存放的都是这个类型的广播,最后这个ArrayList被添加到AMS.mRegisteredReceivers
- 创建BroadcastFilter,添加到AMS.mReceiverResolver,以及ReceiverList中去
发送
image.png创建BroadcastRecord,根据不同广播类型,添加到不同的队列,然后调用对应队列的scheduleBroadcastsLocked方法处理广播
处理
image.png总结
无它,就是观察者模式,只不过结合Binder做了一个跨进程的观察者模式
ordered = false && 动态注册广播处理器,采用并行处理;此外都是串行处理
并行广播开启while循环直接分发,串行广播则是一个个执行
后记
学习自
《Android进阶解密》
http://gityuan.com/2016/06/04/broadcast-receiver/
有什么写得错误、让人费解或遗漏的地方,希望可以不吝赐教,我会马上更改
网友评论