请描述一下 BroadcastReceiver?
2024-08-31 02:07:51
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 挂载、低电量、外播电话、锁屏等。如果我们做的是播放器,那么监听到用户锁屏后我们应该将我们的播放之暂停等
最新文章
- K-Means 聚类算法
- VMware安装ubuntu虚拟机
- NHibernate3快速上手教程FluentNHibernate配置与DBHelper
- MongoDB查询操作限制返回字段的方法
- u3d_Shader_effects笔记2 自定义surfaceDiffuseLight
- ul+li标签制作表格
- java web中日期Date类型在页面中格式化显示的三种方式
- linux安装至少有哪两个分区,各自作用是什么?
- 【Android 界面效果39】android:inputType问题
- Mvc学习笔记(2)
- ubuntu下创建c语言程序之hello world
- 论.net平台的切身感触(惑)
- day2--通过setup设置网卡
- Java日志-Log4j2
- 程序员高效Windows环境配置
- Ubuntu 16.04虚拟机调整窗口大小自适应Windows 7
- 1、eclipse
- 关于margin:-10000px;padding:10000px;的理解
- WMRouter:美团外卖Android开源路由框架
- string常用字符串操作函数