BroadCastReceiver复习

BrocastReceiver是一种广泛运用在应用程序之间的传递信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。

 

广播使用场景:

A.同一app具有多个进程的不同组件之间消息通信

B.不同app之间的组件之间消息通信

 

广播种类:

A.普通广播 :Context.sendBroadcast

B.有序广播 :  Context.sendOrderBroadcastReceiver

C.本地广播 :只在App内传递localBroadcastManager.sendBroadcast

 

实现方式:

1 静态注册:注册完成一直运行

2 跟随activity的生命周期

 

广播的内部实现机制:

Android中的广播使用了设计模式中的观察者模式:基于消息的发布/订阅事件模型。

模型中有3个角色:

 

消息订阅者(广播接收者)

消息发布者(广播发布者)

消息中心(AMS,即Activity Manager Service)

原理描述:

广播接收者通过 Binder机制在 AMS 注册

广播发送者通过 Binder 机制向 AMS 发送广播

AMS 根据 广播发送者 要求,在已注册列表中,寻找合适的广播接收者

寻找依据:IntentFilter / Permission

AMS将广播发送到合适的广播接收者相应的消息循环队列中;

广播接收者通过消息循环 拿到此广播,并回调onReceive()

特别注意:广播发送者和 广播接收者的执行 是 异步 的,发出去的广播不会关心有无接收者接收,也不确定接收者到底是何时才能接收到;

 

 

LocalBroadCastReceiver详解:

LocalBroadCastReceiver相较于其他广播效率更高,因为其内部实现机制是通过Handler实现的,它的sendMessage方法其实是通过handler发送一个Message去实现的。



相关参考文章:http://www.jianshu.com/p/ca3d87a4cdf3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值