一、广播机制概述
通常情况下在学校的每个教室都会装有一个喇叭,这些喇叭是接入到学校广播室的。如果有重要通知,会发送一条广播来告知全校师生。为了便于发送和接收系统级别的消息通知,Android系统也引入了一套类似广播的消息机制。
Android中的广播(Broadcast)机制用于进程/线程间通信,该机制使用了观察者模式,观察者模式是一种软件设计模式,该模式是基于消息的发布/订阅事件模型,该模型中的消息发布者是广播机制中的广播发送者,消息订阅者是广播机制中的广播接收者。
上述图中的广播机制的实现流程具体如下:
1、广播接收者是通过Binder机制在AMS(Activity Manager Service)中进行注册的 (在8.2小节会讲解广播接收者的注册)。
2、广播发送者是通过Binder机制向AMS发送广播。
3、AMS查找符合相应条件(IntentFilter/Permission)的广播接收者 (BroadcastReceiver),将广播发送到相应的消息循环队列中。
4、执行消息循环时获取到此广播,会回调广播接收者(BroadcastReceiver)中的 onReceive()方法并在该方法中进行相关处理。
二、广播接收者
Android系统中内置了很多广播,例如手机开机完成、电池电量不足时都会发送一条广播。
为了监听来自系统或者应用程序的广播事件,Android系统提供了BroadcastReceiver(广播接收者)组件。 当Android系统产生一个广播事件时,可以有多个对应的广播接收者接收并进行处理。