Android Broadcast Receiver 广播
1|0Android Broadcast Receiver 广播
广播(Broadcast)是Android中的一种机制,允许应用程序之间传递消息。广播在Android中扮演着重要角色,能够在不同的组件间传递信息,无论是应用内部还是跨应用。下面我将详细解释广播的机制,并提供几个示例,按照难度逐步增加。
1|1广播机制详细解释
1. 广播的基本概念
广播允许应用程序在系统中发送和接收消息。系统的广播可以是应用程序间的,也可以是系统内部的。广播机制基于发布/订阅模式,使得广播接收者能够接收到发送者发送的消息。
四大角色:
- 广播发送者(Broadcast Sender): 发送广播消息的组件,可以是任何应用或系统组件。
- 广播接收者(Broadcast Receiver): 接收广播消息的组件。
- 消息中心(AMS - Activity Manager Service): 负责管理广播的发送和接收,调度广播接收者。
- IntentFilter: 用于指定广播接收者能够接收哪些广播消息。
2. 广播的工作流程
- 广播接收者注册: 广播接收者通过Binder机制在AMS中注册。·
- 广播发送: 广播发送者通过Binder机制向AMS发送广播。
- 广播分发: AMS根据广播的IntentFilter和权限,找到合适的广播接收者,并将广播发送到相应的消息循环队列。
- 广播接收: 广播接收者从消息循环队列中获取广播,并执行
onReceive()
方法。
3. 广播的注册
广播可以通过两种方式注册:静态注册和动态注册。
- 静态注册: 在AndroidManifest.xml文件中注册,适用于应用启动时需要接收的广播。注意,Android 8.0 之后,静态注册受到限制,只能接收系统广播。
- 动态注册: 通过
registerReceiver()
方法在代码中注册,适用于运行时需要接收的广播。
1|2示例
示例 1:静态注册广播
- 创建广播接收器
- 在清单文件中注册
-
发送广播
示例 2:动态注册广播
- 创建广播接收器
- 在Activity中动态注册广播
示例 3:有序广播
- 创建有序广播接收器
- 在清单文件中注册有序广播
- 发送有序广播
示例 4:应用内广播(LocalBroadcastManager)
需要引入依赖
-
创建广播接收器
-
注册广播接收器
-
发送广播
注意: LocalBroadcastManager
主要用于应用内部广播,确保广播只在同一个应用内部传播。
1|3总结
广播机制在Android中扮演着重要的角色,通过发送和接收广播,组件能够实现消息传递和事件通知。通过静态注册和动态注册两种方式,开发者可以灵活地使用广播。而有序广播和应用内广播(LocalBroadcastManager)提供了更细粒度的控制和安全性。
2|0代码地址
lxj/MyBroadcastReceiver (gitee.com)
__EOF__

本文作者:疾风不问归途
本文链接:https://www.cnblogs.com/20lxj666/p/18344743.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/20lxj666/p/18344743.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)