Android 广播机制

Android 广播的注册  发送  接收 过程均是通过Binder方式与AMS交互来完成的


Android 广播接收器注册过程:

1.  向AMS发送广播注册请求

2.  AMS接收到请求后,完成注册


向AMS发送广播注册请求, 通过ContextImpl的registerReceiverInternal()方法实现

 registerReceiverInternal的作用:

1. 将需要注册的广播接收器 包装成 InnerReceiver实体

2. 向AMS发送Binder请求,即注册广播请求


注册的过程在AMS中完成:

  AMS通过registerReceiver 将 InnerReceiver(IIntentReceiver接口的具体实现类) 和IntentFiler对象(具体的广播)存储起来,广播注册的过程就结束了




Android 广播 发送和接收过程:


1. ContextImpl通过sendBroadcast()方法发送 发送广播的Binder请求到AMS

2. AMS接收到该请求后,将注册了该广播的接收器添加到BroadcastQueue

3. BroadcastQueue通过回调 InnerReceiver的performReceiver方法,完成回调具体的广播接收器的onReceiver方法



由上可知,InnerReceiver 这个Binder接口很重要:

  1. 广播注册请求时,需要将InnerReceiver实体传递给AMS;

  2. 广播发送后的中转(广播接收) 也是通过直接回调1种的InnerReceiver对象来完成



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值