Android 中广播实现机制

本文介绍了Android中广播的基本概念,包括广播的作用、发送消息的场景,以及广播的实现流程,强调了BroadcastReceiver的注册和接收过程。广播在Android系统通信、APP间交互以及系统与APP间的事件传递中扮演重要角色,是一种异步的、只负责发送而不关心接收的通信方式。

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

1、什么是广播(broadcast)?

所谓广播(broadcast)就是发送消息。

问题1:什么是发送消息?

答:发送消息,实质上是Android系统中的一种通信方式。这种通信方式可以用于(1)不同APP之间、(2)同一APP不同线程之间、(3)Android系统与APP之间。

问题2:为什么要发送消息?

答:因为需要通信。在Android系统中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。比如黑名单机制。当手机接到一个电话后,Android系统广播它接到了一个电话,黑名单软件接收到这个广播,查询这个广播中有用的消息,比如电话号码,然后将这个电话号码与所存数据库中黑名单号码匹配,然后完成相应操作。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应用程序所接收。

问题3:如何实现广播broadcast?

答:Android将广播的发送者和接收者分离开来,实现彼此独立,互不影响。这使得系统能够方便集成,更易扩展。

具体实现流程概括如下:

1.广播接收者BroadcastReceiver通过Binder机制向AMS(Activity Manager Service)进行注册;(一个APP必须先向AMS注册才能接收广播,否则不能接收广播)

2.广播发送者通过binder机制向AMS发送广播;

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

4.消息循环执行拿到此广播,回调广播接收者BroadcastReceiver中的onReceive()方法。

对于不同的广播类型,以及不同的BroadcastReceiver注册方式,具体实现上会有不同,但总体流程大致如上。

由此看来,广播发送者和广播接收者分别属于观察者模式中的消息发布和订阅两端,AMS属于中间的处理中心。广播发送者和广播接收者的执行是异步的,发出去的广播不会关心有无接收者接收,也不确定接收者到底是何时才能接收到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值