有序广播和标准广播 --Android开发
一、标准广播和有序广播也很容易理解的。
标准广播:
(1)通过sendBroadcast()方法发送
(2)通过异步方式发送,广播接收者的执行顺序是不明确的
有序广播:
(1)通过sendOrderBroadcast()发送
(2)广播接收者需要按照优先级依次执行
(3)可以使用setResultXXX()、getResultXXX()、abortBroadcast()方法
二、通过简单例子来实现一下标准广播和有序广播
1、很简单的例子,先看一下主布局。

2、主活动需要实现发送标准广播和有序广播,下面是主活动核心代码。
MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction("com.thanlon.broadcastReceiverType");
switch (view.getId()) {
case R.id.order_send_btn://发送有序广播,有序广播通过优先级去
sendOrderedBroadcast(intent, null);
Log.d("Thanlon","发送了有序广播");
break;
case R.id.disorder_send_btn://发送标准广播
sendBroadcast(intent, null);
Log.d("Thanlon","发送了标准广播");
break;
}
}
}
3、接收广播的类。
这里写了三个继承了BroadcastReceiver的类来实现接收广播:
MyBroadcastReveiver1.java:
public class MyBroadcastReveiver1 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Thanlon","MyBroadcastReveiver1接收到广播");
}
}
MyBroadcastReveiver2.java:
public class MyBroadcastReveiver2 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Thanlon","MyBroadcastReveiver1接收到广播");
}
}
MyBroadcastReveiver3.java:
public class MyBroadcastReveiver3 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Thanlon","MyBroadcastReveiver1接收到广播");
}
}
4、注册BroadcastReceiver
AndroidManifest.xml:(在<application>标签里,<activity>结束标签的下面添加如下代码)
<receiver android:name=".MyBroadcastReveiver1">
<!--优先级通过取值来判断优先级先后,优先级取值为-1000~1000,值越大优先级越高,越先接收广播;如果优先级一样,则哪个广播先注册就先执行-->
<intent-filter android:priority="1">
<action android:name="com.thanlon.broadcastReceiverType" />
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReveiver2">
<intent-filter android:priority="2">
<action android:name="com.thanlon.broadcastReceiverType" />
</intent-filter>
</receiver>
<receiver android:name=".MyBroadcastReveiver3">
<intent-filter android:priority="3">
<action android:name="com.thanlon.broadcastReceiverType" />
</intent-filter>
</receiver>
当发送有序广播的时,要根据优先级来判断哪个广播先执行。为了很好的证明,在配置文件中设置了不同的优先级。如果优先级相同,如何判断哪个先执行?先注册的,先执行。
5、测试

很明显有序广播是由优先级的高低来决定的。由于接收广播的类较少,标准广播不易被体现出来,只需知道就收广播的顺序是不同的就行了,在这里不进行演示。
有序广播和标准广播 --Android开发的更多相关文章
- 本地广播的简单示例 --Android开发
1.局部通知管理器LocalBroadcastManager,用于同一个应用中不同组件之间发送广播.由于是在同应用中发送广播,所以使用它安全性.效率也会提高. 2.本例实现简单的发送本地广播的案例 点 ...
- 马上学Android开发在线视频教程全集
马上学Android开发视频教程全集 马上学Android开发[马上学Android]安卓开发视频教程 001 Androi 马上学Android开发[马上学Android]安卓开发视频教程 002 ...
- Android开发——BroadcastReceiver广播的使用
想要了解广播定义及相关原理的可以看下这一篇BroadcastReceiver史上最全面解析 简单地对广播进行分类吧,广播有两个角色,一个是广播发送者,另外一个是广播接收者 广播按照类型分为两种,一种是 ...
- Android开发学习—— Broadcast广播接收者
现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息.Android中:系统在运行过程中,会产生许多事件,那么某些事件产生时,比如:电量改变.收发短信.拨打电话.屏 ...
- Android开发之广播
广播是Android开发中的一个重要的功能,在Android里面有各式各样的广播,比如:电池的状态变化.信号的强弱状态.电话的接听和短信的接收等等,现在给大家简单介绍一下系统发送.监听这些广播的机制. ...
- Android(java)学习笔记179:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)
之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播: 1. 我们首先了解一下有序广播和无序广播区别和联系? (1) 有序广播> 接受者 ...
- Android(java)学习笔记122:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)
之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播: 1. 我们首先了解一下有序广播和无序广播区别和联系? (1)有序广播> 接受者有优先级, ...
- Android的有序广播和无序广播(解决安卓8.0版本之后有序广播的接收问题)
前言 Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制. *** 特殊广播(动态注册广播接收者) 说:有序广播和无序广播之前,咱们先来说下Android中一些特殊的广播如 ...
- Android开发:组播(多播)与广播
近期由于需要编写能够使同一局域网中的Android客户端与PC端进行自动匹配通信功能的程序,学习并试验了JAVA组播与广播的内容,记录一些理解如下: 一.组播(多播) 背景知识:组播使用UDP对一定范 ...
随机推荐
- CentOS 7 install slurm cluster
//slurm install //CentOS 7 system //192.168.159.141 node01 //192.168.159.142 node02 systemctl stop f ...
- 2018年11月22日 字典 E18灯翼平整度 D&G is SB
如果创建的东西需要增加修改的,则用list 如果不能修改就用元祖,如果需要修改这需要转成list 字典 字典的value是任意值 info= {"k1":'v1',"k2 ...
- 【做题】arc072_f-Dam——维护下凸包
题意:有一个容量为\(L\)的水库,每天晚上可以放任意体积的水.每天早上会有一定温度和体积的水流入水库,且要保证流入水之后水的总体积不能超过\(L\).令体积分别为\(V_1,V_2\),温度分别为\ ...
- 在VMware14上安装centos6.5
打开vmware14 => 创建新虚拟机(即再建一个linux),已有光盘映像文件,正常操作即可.
- springBoot 全局异常捕捉
package cn.com.cs.core.exception; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import or ...
- ETCD原理
etcd:从应用场景到实现原理的全方位解读 从etcd的架构开始,深入到源码中解析etcd 1 架构 从etcd的架构图中我们可以看到,etcd主要分为四个部分. HTTP Server: 用于处理用 ...
- Docker与.Net项目类型
使用Docker的项目,要求:基础类库与平台无关=>.netCore项目..netStandard项目 公共项目:.netCore项目 入口项目:.netStandard项目 例如:webapi ...
- 【NOIP 2017】Day2 T3 列队
Problem Description \(Sylvia\) 是一个热爱学习的女孩子. 前段时间,\(Sylvia\) 参加了学校的军训.众所周知,军训的时候需要站方阵. \(Sylvia\) 所在的 ...
- PHP中SESSION自定义会话管理器
<?php class CustomSession implements SessionHandlerInterface{ private $link; private $lifetime; p ...
- 用R创建Word和PowerPoint文档--转载
https://www.jianshu.com/p/7df62865c3ed Rapp --简书 Microsoft的Office软件在办公软件领域占有绝对的主导地位,几乎每个职场人士都必须掌握Wor ...