博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读书笔记-Android中的广播机制
阅读量:6804 次
发布时间:2019-06-26

本文共 1153 字,大约阅读时间需要 3 分钟。

1.1 广播分类

1.1.1标准广播

效率要更高些 几个接收器可以同时收到某一条广播

1.1.2 有序广播

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

1.2 接收系统广播

1.2.1 注册广播

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

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

  • 区别和联系

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

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

  • 静态注册

静态注册就是在Manifest里进行注册 Android 8之后 在后台运行的应用对后台服务的访问受到限制 然后上课的时候学长说几乎等于凉凉? 然后我就没怎么去看静态注册了:)

  • 动态注册

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

1.2.2 接收广播

每当接收到广播onReceive()就会被调用一次 这里需要注意的是在onReceive()中不能创建子线程 也不要写太多逻辑操作和进行耗时操作 当onReceive()方法运行超过10s就会ANR

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

静态注册:

复制代码

动态注册:

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

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

1.3 发送自定义广播

1.3.1 发送有序广播

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

1.3.2 发送标准广播

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

1.4 使用本地广播

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

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

1.5 关于源码

可能还是因为太菜的缘故吧 看源码还是好难受

转载于:https://juejin.im/post/5cebc618e51d45775313814a

你可能感兴趣的文章
HTTP的post和get总结
查看>>
CEPH Cache Tiering
查看>>
Oracle 11g新特性之--Server Result Cache
查看>>
Oracle中的ORA-01548: active rollback segment '_SYSSMU1$' found
查看>>
AngularJs $anchorScroll、$controller、$document
查看>>
Microsoft资源
查看>>
WordPress 永久链接或固定链接设置技巧
查看>>
数据结构之线性表
查看>>
在PPT中插入FLASH遇到的系列问题
查看>>
XSS研究4-来自外部的XSS攻击的防范
查看>>
Spring知识点总结-1
查看>>
微软私有云分享(R2)21 BMC提升B格
查看>>
MDSF:如何使用GMF来做TOGAF建模工具
查看>>
Spring Security简介
查看>>
打造一流的研发中心
查看>>
MCollective架构篇3-Puppet插件的部署及测试
查看>>
配置GNS使用CRT连接
查看>>
Java:集合类性能分析
查看>>
cms无法登陆
查看>>
JavaScript中事件处理
查看>>