android中的广播机制,Android中的广播机制

本文详细介绍了Android中的广播接收器,包括静态和动态注册的区别,动态注册的注意事项,如何设置广播接收顺序,以及如何拦截广播。此外,还探讨了静态注册在Android 8.0后的限制,并提出动态注册作为替代方案。最后,讨论了本地广播的使用,确保广播只在应用内部传递,提高了安全性。
摘要由CSDN通过智能技术生成

同一时刻只有一个广播接收器可以接收到一条静态广播 当前面的接收器截断广播时 后面的接收器就无法接收到这条广播了

1.2 接收系统广播

1.2.1 注册广播

接收广播必要的步骤就是对广播接收器注册广播

广播分为静态注册和动态注册

区别和联系

动态注册优先于静态注册接收到广播

动态注册只有在应用运行的情况下才能接收到广播 而静态注册在应用没有运行时也可以接收到广播

静态注册

静态注册就是在Manifest里进行注册 Android 8之后 在后台运行的应用对后台服务的访问受到限制 然后上课的时候学长说几乎等于凉凉? 静态注册很多情况下都可以用动态注册来替代 不过感觉像类似于接收开机广播这种情况用静态注册还是很舒服的:)

动态注册

动态注册就是在代码里通过 context.registerReceiver()

进行注册 需要注意的是动态注册的广播在不用的时候必须要取消注册

1.2.2 接收广播

每当接收到广播 onReceive()

就会被调用一次 这里需要注意的是在 onReceive()

中不能创建子线程 也不要写太多逻辑操作和进行耗时操作 当 onReceive()

方法运行了较长时间没有结束时程序就会报错

设置广播接收器的接收顺序 :当几个广播接收器都要对一条有序广播进行接收时设置广播接收器的接收顺序就很重要了 思路也很简单在相应的的地方添加权限就好了 权限越大越早接收哦

静态注册:

复制代码

动态注册:

IntentFilter filter = new IntentFilter();

filter.addAction(ACTION);

filter.setPriority(权限数字);

复制代码

拦截广播是只有在接收有序广播时才会出现的情况 我们通过 abortBroadcast()

方法即可拦截某条我们想要拦截的广播

1.3 发送自定义广播

1.3.1 发送有序广播

发送广播不难 通过 sendOrderedBroadcast()

方法即可发送一条有序广播

1.3.2 发送标准广播

同理 通过 sendBroadcast()

方法即可发送一条标准广播

1.4 使用本地广播

之前我们发出的广播手机上所有的应用都可以接收到 这样可能就会有一定的安全问题 为了让我们发出的广播只有当前应用可以接收到 这里引出了本地广播的概念

本地广播的发送和接收和全局广播几乎没有什么区别 主要在于要用 LocalBroadcastManager

和 LocalReceiver

这两个类来进行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值