问:使用过广播吗?
答:这个肯定是会用到的,broadcast 是将数据从一个节点发送到其他各个节点上去,因此我们在开发中会经常使用。
① 做{XX项目}的时候,APP内部组件的通信就是用的广播,当然也可以跨进程。
② 多线程间的通讯咱们也用的广播。
③ 当然有些和Android系统的交互也用到了广播,比如电话呼入和判断网络是否可用的时候。
问:了解广播吗?
答:
广播用到了观察者模式,基于消息的发布 / 订阅事件模型
其中有三个角色:
(1)消息订阅者(广播接收者)
(2)消息发布者(广播发布者)
(3)消息中心(AMS,即Activity Manager Service)
咱暂且简称为订阅者、发布者和AMS吧
步骤:
订阅者通过Binder机制在AMS里注册
发布者通过Binder机制异步给AMS发送广播
AMS根据发布者的要求找到对应的订阅者
AMS发送广播到对应的订阅者的消息循环队列中
订阅者通过消息循环拿到广播,并回调onReceive
问:使用过广播吗遇到过什么问题吗?
答:
1、主要是一些版本的问题
2、比如8.0广播取消了很多静态注册,通过判断8.0后都使用动态注册