Android中的广播机制

栏目: IOS · Android · 发布时间: 4年前

内容简介:同一时刻只有一个广播接收器可以接收到一条静态广播 当前面的接收器截断广播时 后面的接收器就无法接收到这条广播了接收广播必要的步骤就是对广播接收器注册广播广播分为静态注册和动态注册

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

1.2 接收系统广播

1.2.1 注册广播

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

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

  • 区别和联系

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

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

  • 静态注册

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

  • 动态注册

动态注册就是在代码里通过 context.registerReceiver() 进行注册 需要注意的是动态注册的广播在不用的时候必须要取消注册

1.2.2 接收广播

每当接收到广播 onReceive() 就会被调用一次 这里需要注意的是在 onReceive() 中不能创建子线程 也不要写太多逻辑操作和进行耗时操作 当 onReceive() 方法运行了较长时间没有结束时程序就会报错

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

静态注册:

<intent-filter android:priority="权限数字">
<action .../>
</intent-filter>
复制代码

动态注册:

IntentFilter filter = new IntentFilter();
				filter.addAction(ACTION);
				filter.setPriority(权限数字);
复制代码

拦截广播是只有在接收有序广播时才会出现的情况 我们通过 abortBroadcast() 方法即可拦截某条我们想要拦截的广播

1.3 发送自定义广播

1.3.1 发送有序广播

发送广播不难 通过 sendOrderedBroadcast() 方法即可发送一条有序广播

1.3.2 发送标准广播

同理 通过 sendBroadcast() 方法即可发送一条标准广播

1.4 使用本地广播

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

本地广播的发送和接收和全局广播几乎没有什么区别 主要在于要用 LocalBroadcastManagerLocalReceiver 这两个类来进行操作


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高性能网站建设指南(第二版)

高性能网站建设指南(第二版)

Steve Souders / 刘彦博 / 电子工业出版社 / 2015-5 / 55.00元

《高性能网站建设指南:前端工程师技能精髓》结合Web 2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南:前端工程师技能精髓》中,作者给出了14条具体的优化......一起来看看 《高性能网站建设指南(第二版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具