发送方和接收方通过 AMS(Activity Manager Service) 来进行交互
- 广播接收者通过Binder机制在AMS注册
- 广播发送者通过Binder机制向AMS发送广播
- AMS根据广播发送者要求,在已注册列表中,寻找符合条件的接受者(依据:IntentFilter / Permission)
- AMS将广播发送到合适的接受者消息循环队列中
- 接受者通过消息循环拿到该广播,并回调OnReceive()
- 发送方
- 可以自定义发送(通过定义intent及执行sendBroadcast方法)
- 也可以由系统自动发送,即当系统的某些行为发生变化时,如时间更改,此时不需要做发送方的任何操作
- 接收方
- 自定义一个BroadcastReceiver,并重写onReceive方法
- onReceive中执行接收到广播后做的操作
- 这个BroadcastReceiver必须要进行注册,注册方法有两种:
- 静态注册:在AndroidManifest中定义receiver (Android 8后失效)
- 动态注册:需要分别在onResume和onPause中进行注册和销毁
1.3 广播的补充知识
- 设置仅接受本App内的广播:
- 对于静态注册的广播:设置exported属性
- 对于动态注册的广播:实例化LocalBroadcastManger, 并调用它注册/解绑