BroadcastReceiver

广播
  • 一种广泛运用在应用程序之间传递信息的机制。

广播接收者
  • 对发出来的广播进行过滤接收并响应的一类组件
  • 用于接收来自系统和应用中的广播

常见使用场景
  • 接收开机广播,启动APP
  • 接收网络改变广播,根据不同状态做出不同的处理
  • 接收电池电量改变广播,提示用户电量不足

为什么Android会有这么一套广播机制?
  • 减少开发工作量和开发周期
  • 做为应用开发者只需要掌握广播接收者的使用即可

广播分类
  • 标准广播
    • 一种完全异步的广播
    • 在广播发出以后,所有的广播接收者会在同一个时间接收到该广播
    • 效率高
    • 无法被拦截
    • 同级别的动态注册高于静态注册
  • 有序广播
    • 一个同步执行的广播
    • 同一时间会接收优先级高的广播,处理完广播接收器中逻辑才会继续传递
    • 优先级-1000~1000,值越大,优先级越高
    • 如果前面的广播接收器截断了正在传递的广播,后面的就没办法接收到消息了
    • 同级别的动态注册高于静态注册
  • 异步广播(滞留广播)
    • 不能将处理结果传给下一个接收者
    • 无法终止广播

广播分类
  • 系统全局广播
  • 本地广播
    • 只能动态注册
    • 提高的安全性,这个广播只能在应用程序内部进行传递
    • 比全局广播更高效

广播的启动方式
  • 动态注册(代码中)
  • 静态注册(AndroidManifest.xml中)

发送一个广播
  • 把信息装入一个Intent对象
  • 通过调用相应的方法将Intent用广播的形式发送出去
    • sendBroadcast()
    • sendOrderBroadcast()
    • sendStickyBroadcast()

常见面试题
1.广播有哪几种注册的方式?各有什么不同?
   - 动态注册,代码注册,生命周期和程序的生命周期一致,优先级高于静态
   - 静态注册,清单文件注册,只要设备处于开启状态,就能接收到广播
2.有序广播和无序广播的区别

你可能感兴趣的:(BroadcastReceiver)