前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android全局广播(无序,有序)

Android全局广播(无序,有序)

作者头像
计蒙不吃鱼
发布2025-06-11 20:33:06
发布2025-06-11 20:33:06
1170
举报
文章被收录于专栏:Android开发Android开发

写这篇文章的原因: 最近博主在带两个小白学Android,在教广播的过程中发现了一些问题 大概如下: 1.Android8.0以上广播需要动态注册 (静态注册无效) 2.Android8.0以上两个应用间按照以前的操作发送广播后在另一个没办法接收到广播的情况 3.出现了广播接收者的抢先或重复问题 在文章最后会有解决办法!!!!

首先还是按照Android8.0以下来介绍一下广播

一.无序广播:启动方式------>Context.sendBroadcast() (异步) 所有的receivers(接收器)的执行顺序不确定,因此所有的receivers(接收器)接收broadcast的顺序不确定。 这种方式效率更高,但是BroadcastReceiver无法使用setResult系列、getResult系列及abort(中止)系列API 下面是简单操作:(以解屏,锁屏为例) 1.定义一个广播类

2.对广播进行注册(静态或者动态) 静态:AndroidMainFest中的application标签下加上receiver的子标签(此注释只是一种比喻!!)

动态:

3.如果是监听的网络等其他,记得要加权限

以上是系统的,下面介绍下广播发送者发送自定义广播------>sendBroadcast()

二.有序广播 启动方式------>sendOrderedBroadcast() 里面两个参数的就不写了

至于优先级(-1000到1000)的值 —>值越大越先接收到广播 静态:设置intent-fliter的中Priority 动态:直接调用intentFilter.setPriority();

与无序广播的区别(主要是两个方法) 1.setResultData() 修改广播中发送的对象 2.aboryBroadcast() 拦截广播

解决文章开始的问题: 1.Android8.0以上两个应用间按照以前的操作发送广播后在另一个没办法接收到广播的情况 解决办法:在发送广播的时候调用setPackage()方法,放入另一个应用的包名(另一个应用中注册文件package)

2.出现了广播接收者的抢先或重复问题 解决办法:静态注册和动态注册,不可同时存在,两者选其一

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档