BroadCastReceiver 是 Android 四大组件之一,主要用于接收系统或者 app 发送的广播事件。

广播分两种:有序广播和无序广播。

内部通信实现机制:通过 Android 系统的 Binder 机制实现通信。

无序广播:完全异步,逻辑上可以被任何广播接收者接收到。

优点是效率较高。缺点是一个接收者不能将处理结果传递给下一个接收者,并无法终止广播 intent 的传播。

有序广播:按照被接收者的优先级顺序,在被接收者中依次传播。比如有三个广播接收者 A,B,C,优先级是 A >B > C。那这个消息先传给 A,再传给 B,最后传给 C。每个接收者有权终止广播,比如 B 终止广播,C 就无法接收到。此外 A 接收到广播后可以对结果对象进行操作,当广播传给 B 时,B 可以从结果对象中取得 A 存入的数据。在通过 Context.sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode,initialData, initialExtras)时我们可以指定 resultReceiver 广播接收者,这个接收者我们可以认为是最终接收者,通常情况下如果比他优先级更高的接收者如果没有终止广播,那么他的 onReceive 会被执行两次,第一次是正常的按照优先级顺序执行,第二次是作为最终接收者接收。如果比他优先级高的接收者终止了广播,那么他依然能接收到广播。在我们的项目中经常使用广播接收者接收系统通知,比如开机启动、sd 挂载、低电量、外播电话、锁屏等。如果我们做的是播放器,那么监听到用户锁屏后我们应该将我们的播放之暂停等

最新文章

  1. K-Means 聚类算法
  2. VMware安装ubuntu虚拟机
  3. NHibernate3快速上手教程FluentNHibernate配置与DBHelper
  4. MongoDB查询操作限制返回字段的方法
  5. u3d_Shader_effects笔记2 自定义surfaceDiffuseLight
  6. ul+li标签制作表格
  7. java web中日期Date类型在页面中格式化显示的三种方式
  8. linux安装至少有哪两个分区,各自作用是什么?
  9. 【Android 界面效果39】android:inputType问题
  10. Mvc学习笔记(2)
  11. ubuntu下创建c语言程序之hello world
  12. 论.net平台的切身感触(惑)
  13. day2--通过setup设置网卡
  14. Java日志-Log4j2
  15. 程序员高效Windows环境配置
  16. Ubuntu 16.04虚拟机调整窗口大小自适应Windows 7
  17. 1、eclipse
  18. 关于margin:-10000px;padding:10000px;的理解
  19. WMRouter:美团外卖Android开源路由框架
  20. string常用字符串操作函数

热门文章

  1. 第十篇.4、python并发编程之多线程
  2. filepath:处理文件路径的一把好手
  3. Some notes of An Insider's Guide to TOEFL iBT
  4. google的CacheBuilder缓存
  5. 格式化输出的三种方式,运算符及流程控制之if判断
  6. 我所亲身经历的CMMI3 [问题点数:20分,结帖人outer2000]--转载
  7. Python3数据结构汇总
  8. linux运维、架构之路-K8s滚动更新及回滚
  9. CAP拾遗
  10. 51 Nod 1085 01背包问题