概述
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属于中间的处理中心。广播发送者和广播接收者的执行是异步的,发出去的广播不会关心有无接收者接收,也不确定接收者到底是何时才能接收到。
最后
以上就是温柔煎饼为你收集整理的Android 中广播实现机制1、什么是广播(broadcast)?的全部内容,希望文章能够帮你解决Android 中广播实现机制1、什么是广播(broadcast)?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复