一、标准广播和有序广播也很容易理解的。

标准广播:

(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开发的更多相关文章

  1. 本地广播的简单示例 --Android开发

    1.局部通知管理器LocalBroadcastManager,用于同一个应用中不同组件之间发送广播.由于是在同应用中发送广播,所以使用它安全性.效率也会提高. 2.本例实现简单的发送本地广播的案例 点 ...

  2. 马上学Android开发在线视频教程全集

    马上学Android开发视频教程全集 马上学Android开发[马上学Android]安卓开发视频教程 001 Androi 马上学Android开发[马上学Android]安卓开发视频教程 002 ...

  3. Android开发——BroadcastReceiver广播的使用

    想要了解广播定义及相关原理的可以看下这一篇BroadcastReceiver史上最全面解析 简单地对广播进行分类吧,广播有两个角色,一个是广播发送者,另外一个是广播接收者 广播按照类型分为两种,一种是 ...

  4. Android开发学习—— Broadcast广播接收者

    现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息.Android中:系统在运行过程中,会产生许多事件,那么某些事件产生时,比如:电量改变.收发短信.拨打电话.屏 ...

  5. Android开发之广播

    广播是Android开发中的一个重要的功能,在Android里面有各式各样的广播,比如:电池的状态变化.信号的强弱状态.电话的接听和短信的接收等等,现在给大家简单介绍一下系统发送.监听这些广播的机制. ...

  6. Android(java)学习笔记179:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)

    之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播:   1.   我们首先了解一下有序广播和无序广播区别和联系? (1) 有序广播> 接受者 ...

  7. Android(java)学习笔记122:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)

    之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播: 1. 我们首先了解一下有序广播和无序广播区别和联系? (1)有序广播> 接受者有优先级, ...

  8. Android的有序广播和无序广播(解决安卓8.0版本之后有序广播的接收问题)

    前言 Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制. *** 特殊广播(动态注册广播接收者) 说:有序广播和无序广播之前,咱们先来说下Android中一些特殊的广播如 ...

  9. Android开发:组播(多播)与广播

    近期由于需要编写能够使同一局域网中的Android客户端与PC端进行自动匹配通信功能的程序,学习并试验了JAVA组播与广播的内容,记录一些理解如下: 一.组播(多播) 背景知识:组播使用UDP对一定范 ...

随机推荐

  1. 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

    一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...

  2. lnmp部署知乎出现403

    查看错误日志: [root@web01 /]# tailf  /var/log/nginx/error.log 2019/01/16 19:02:06 [error] 10023#10023: *8 ...

  3. PowerDesigner 学习:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  4. topcoder srm 300 div1

    problem1 link 直接模拟即可. import java.util.*; import java.math.*; import static java.lang.Math.*; public ...

  5. Linux 系统/etc/profile 内配置 系统脚本命令

    背景 在Linux系统下,我们需要利用脚本命令启动一个进程的时候,需要先找到找到启动文件,然后再启动.比如服务器上安装了一个was应用服务器,我们需要每次启动服务器都需要使用如下命令: sh  was ...

  6. 从客户端(XXX)中检测到有潜在危险的Request.Form 值

    aspx 页面出现 [HttpRequestValidationException (0x80004005):从客户端(TextBox1="<?xml version="1. ...

  7. Flutter 第一次运行就出现白屏的问题

    --enable-software-rendering 解决办法: 顶部菜单找到 run-->Edit Configurations 中加这么一句:

  8. linux内核中的LPM是什么?

    答: 是usb的链接电源管理(Link Power Management),这是一个与usb硬件相关的能力,主机就能自动把设备设置成低功耗状态

  9. 2018年第九届蓝桥杯B组题C++汇总解析-fishers

    2018年第九届蓝桥杯B组题C++解析-fishers 题型 第一题:第几天 第二题:明码 第三题:乘积尾零 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 ...

  10. android 控件获取 获取焦点

    控件.setEnabled(true);控件.setFocusable(true);控件.setFocusableInTouchMode(true);控件.requestFocus();控件.requ ...