读书笔记-Android中的广播机制

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

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

静态注册:

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

1.5 关于源码

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值