当前课程知识点:Android应用开发基础 > 第五章 广播 > 5.4 有序广播 > 5.4有序广播
本节我们介绍有序广播
上一节已经学习了发送自定义广播
广播分为有序广播和无序广播两种
普通的广播一般是无序广播
用sendBroadcast()方法发送
普通广播是完全异步的
逻辑上可以在同一时刻
被所有匹配的接受者接收到
消息传递效率高
缺点是接受者不能将处理结果
传递给下一个接收者
也无法终止广播传播
有序广播
用sendOrderedBroadcast()方法发送
即从优先级最高的广播接收器开始接收
接收完了如果没有丢弃
就下传给下一个
次高优先级的广播接收器进行处理
依次类推 直到最后
如果多个应用程序设置的优先级别相同
则谁先注册的广播
谁就可以优先接收到广播
有序广播的工作流程如图所示
1 广播发送方发送的广播
会按特定次序依次传播给多个接收方
2 广播接收方的接收次序由
android:priority优先级的属性控制
3 android:priority
优先级的取值范围在-1000到1000
相同优先级的接收器
接收到广播的顺序随机
有序广播允许接收方修改广播数据
或者取消下级接收器的广播接收权利
图中有三个接收短消息广播接收器
优先级分别为1000 100和10
系统广播产生时
优先级为1000的广播先收到广播消息
然后优先级为100的广播接收器收到消息
并且取消了广播消息
优先级为10的广播接收器接收不到消息
有序广播有哪些作用呢
具体的实例就是骚扰短信的拦截
如图所示
Android的短息广播
就是一个典型的有序广播
Android系统在收到短信后
会立刻发送一个广播
广播的Action 频道如下
android.provider.Telephony.SMS_RECEIVED
有序广播最大的特点是
所有被注册的广播接收器
必须严格按照优先级数值
在ActivityManagerService的接收队列中
按大小排列
手机卫士等应用程序
可以设置接收短消息的最大优先级
通过抢先接收短信后
判断如果是黑名单或者骚扰短信
就阻止Android短信收件箱获取短信
就能实现拦截垃圾短信的目的
有序广播的工作特点如下
1 广播数据按顺序
依次被传递给广播接收器
2 任何应用都可以通过接收有序广播
3 广播接收器通过优先级依次获取广播
4 优先级高的广播接收器
可以决定后续接收器是否能获取广播
5 优先级高的广播接收器
可以修改广播数据
并将修改结果往下一级进行传递
上一节我们实现了一个无序广播的实例
发送无序广播
应用程序自己可以收到广播消息并显示
另外一个应用程序
也可以收到这条广播消息
这一节我们实现一个有序广播
发送自定义广播
只有应用程序自己可以收到
收到了关闭广播消息
阻止其他的应用程序收到
下面我们介绍一下
有序广播实例的实现过程
1 编写广播接收类MyReceiver接收广播
继承BroadcastReceiver
并重写onReceive方法
如图所示
1.1 首先定义广播名称
1.2 收到广播消息后提示
1.3 收到广播后丢弃
阻止其他应用程序收到
2 在Activity中注册广播接收器MyReceiver
如图所示
2.1 定义广播接收器
2.2 初始化广播接收器对象
2.3 新建自定义广播过滤
2.4 设置广播接收器的优先级
2.5 设置广播接收器接收自定义广播
3 在Activity中创建按钮
点击后发送广播
新建自定义sendBroadcast方法
如图所示
3.1 创建广播意图
广播接收Action 频道为
BROADCAST_TYPE1
3.2 使用sendOrderedBroadcast方法
发送有序广播
最后我们看一下有序广播的实现
发送无序广播后
应用程序可以收到广播消息并显示
应用程序收到广播消息后
关闭了广播消息
阻止其他的应用程序收到广播消息
其他应用程序就收不到消息
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统