美文网首页
【Android】【Framework】【Broadcast】

【Android】【Framework】【Broadcast】

作者: 徐乙_ | 来源:发表于2019-08-17 14:49 被阅读0次

    注册

    image.png

    静态注册由PMS来完成,图中是动态注册

    1. 通过AMS,把当前进程的ApplicationThread、InnerReceiver对象的代理类,注册到system_server进程
    2. 把广播添加到ReceiverList,它继承自ArrayList,这个ArrayList存放的都是这个类型的广播,最后这个ArrayList被添加到AMS.mRegisteredReceivers
    3. 创建BroadcastFilter,添加到AMS.mReceiverResolver,以及ReceiverList中去

    发送

    image.png

    创建BroadcastRecord,根据不同广播类型,添加到不同的队列,然后调用对应队列的scheduleBroadcastsLocked方法处理广播

    处理

    image.png

    总结

    无它,就是观察者模式,只不过结合Binder做了一个跨进程的观察者模式
    ordered = false && 动态注册广播处理器,采用并行处理;此外都是串行处理
    并行广播开启while循环直接分发,串行广播则是一个个执行

    后记

    学习自
    《Android进阶解密》
    http://gityuan.com/2016/06/04/broadcast-receiver/

    有什么写得错误、让人费解或遗漏的地方,希望可以不吝赐教,我会马上更改

    相关文章

      网友评论

          本文标题:【Android】【Framework】【Broadcast】

          本文链接:https://www.haomeiwen.com/subject/hqxksctx.html