【Android】广播的原理及实现步骤

1. 广播

1.1 原理

发送方和接收方通过 AMS(Activity Manager Service) 来进行交互

交互过程
  1. 广播接收者通过Binder机制在AMS注册
  2. 广播发送者通过Binder机制向AMS发送广播
  3. AMS根据广播发送者要求,在已注册列表中,寻找符合条件的接受者(依据:IntentFilter / Permission)
  4. AMS将广播发送到合适的接受者消息循环队列中
  5. 接受者通过消息循环拿到该广播,并回调OnReceive()

1.2 实现一个广播需要做的

  • 发送方
    • 可以自定义发送(通过定义intent及执行sendBroadcast方法)
    • 也可以由系统自动发送,即当系统的某些行为发生变化时,如时间更改,此时不需要做发送方的任何操作
  • 接收方
    • 自定义一个BroadcastReceiver,并重写onReceive方法
    • onReceive中执行接收到广播后做的操作
    • 这个BroadcastReceiver必须要进行注册,注册方法有两种:
      • 静态注册:在AndroidManifest中定义receiver (Android 8后失效)
      • 动态注册:需要分别在onResume和onPause中进行注册和销毁

1.3 广播的补充知识

  • 设置仅接受本App内的广播:
    • 对于静态注册的广播:设置exported属性
    • 对于动态注册的广播:实例化LocalBroadcastManger, 并调用它注册/解绑

2. 附录

参考文档(图源):https://www.jianshu.com/p/ca3d87a4cdf3

你可能感兴趣的:(【Android】广播的原理及实现步骤)