Android中的广播机制

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

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

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

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 这两个类来进行操作


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

查看所有标签

猜你喜欢:

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

Java语言程序设计

Java语言程序设计

(美) Y. Daniel Liang / 李娜 / 机械工业出版社 / 2011-6 / 75.00元

本书是Java语言的经典教材,多年来畅销不衰。本书全面整合了Java 6的特性,采用“基础优先,问题驱动”的教学方式,循序渐进地介绍了程序设计基础、解决问题的方法、面向对象程序设计、图形用户界面设计、异常处理、I/O和递归等内容。此外,本书还全面且深入地覆盖了一些高级主题,包括算法和数据结构、多线程、网络、国际化、高级GUI等内容。 本书中文版由《Java语言程序设计:基础篇》和《Java语......一起来看看 《Java语言程序设计》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具