android开发-BroadcastReceiver的种类

本文详细介绍了Android中的广播机制,包括广播的种类(如普通广播、有序广播等)、广播的注册方式(静态注册与动态注册)及其内部实现机制。此外还对比了本地广播与传统广播在效率上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、广播的种类:

普通广播、有序广播、粘性广播、本地广播

2、广播的注册方式:

静态注册、和动态注册


静态的注册是在应用安装的时候由系统自动完成注册,与其他三大组件一样都是由系统在安装时,由PMS(PackageManagerService)来完成整个注册的过程

动态注册是由ContextWrapper的registerReceiver方法开始的,具体的实现是由ContextImpl来完成的



3、内部实现机制

通过Binder机制向AMS(Activity Manager Service}进行注册

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

AMS查找符合响应条件的(IntentFilter/Permission)的BroadcastReceiver,然后将广播发送到BroadcastReceiver(一般情况下是Activity)响应的消息循环队列中

消息循环执行拿到此广播 ,回调BroadcastReceiver中的onReceiver

LocalBroadcastManager高效的原因是 因为它的内部是通过Handler实现的,他的sendBroadcast方法的含义是通过handler发送一个Message实现的

他的register其实是在向一个集合添加接口,当有其他的地方调用的时候 直接从集合中找到对应的实现接口的对象 然后通过handler发送消息 调用回调函数

因为是通过handler来实现广播的发送,相比于Binder那可定是更加高效了,通过也保证了我们应用内的广播发送


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值