Broadcast分为两种广播,普通广播,是异步的,可以在同一时刻被所有接收者收到,消息传递效率比较高,但缺点是接收者不能将结果传递给下一个接收者,且无法终止Broadcast Intent的传播

有序广播的接收者则将按预先声明的优先级依次接收Broadcast.如A高于B,了高于C,那么执行顺序为A到B到C.优先级声明在元素的android:priority属性中,数字越大优先级越高.取值范围为-1000~1000,先可以在代码中调用IntentFilter对象的setPriority()进行设置.

发送有序广播的方法为sendOrderedBroadcast()

优先接收到Broadcast的接收者可以通过setResultExtras(Bundle)方法将处理结果存入Broadcast中,然后传给下一个接收者,

下一个接收者通过Bundle bundle = new getResultExtras(true)可以获取上一个接收者存入的数据

下面是一个例子,共定义了两个receiver

package WangLi.Service.SortedBroadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.widget.Toast;public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,"接收到的Intent的Action为:" + intent.getAction() + "\n消息内容是:"+ intent.getStringExtra("msg"), 5000).show();//创建一个Bundle对象,并存入数据Bundle bundle = new Bundle();bundle.putString("first", "第一个BroadcastReceiver存入的消息");//将bundle放入结果中setResultExtras(bundle);//取消Broadcast的继续发送abortBroadcast();}}

package WangLi.Service.SortedBroadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.widget.Toast;public class MyReceiver2 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Bundle bundle = getResultExtras(true);//解析前一个BroadcastReceiver所存入的key为first的消息String first = bundle.getString("first");Toast.makeText(context,"第一个Broadcast存入的消息为:" + first, 5000).show();}}

配置两个receiver的优先级

                                                                                                                
一个是20,一个是0,显然是先执行优先级为20的那个接收者

注意MyReceiver里的取消Broadcast继续发送的代码

abortBroadcast();

如果注释它,那么MyReceiver2 也会得到执行,即按顺序,先出现画面1,再出现画面2

画面1


画面2


如果不注释掉这行代码,那么执行中只会运行MyReceiver,没有MyReceiver2,所以只会出现画面1

更多相关文章

  1. Android的进程、线程与优先级
  2. Java/Android中的优先级任务队列的实践
  3. Android(安卓)开发中使用广播的那些事儿
  4. 解密:为什么Android机没有iPhone流畅呢?
  5. Android中常用adb的命令
  6. 【安卓笔记】BroadcastReceiver
  7. Android中广播的基本原理
  8. Android日志分类及查看过滤
  9. 9.5android线程优先级,go和rust比较

随机推荐

  1. Android面试看重你什么?(推荐!!!)
  2. Android获取设备唯一ID
  3. android布局基础及范例:人人android九宫格
  4. Android底部弹出iOS7风格对话选项框
  5. Android用户看过来,免ROOT和顽固后台拜拜
  6. 让 Android(安卓)可以识别BMP图片文件,且
  7. 第一行代码笔记1
  8. Android(安卓)5.1.1 源码目录结构
  9. Android(安卓)碎屏效果 (Crack Screen,击
  10. android socket通信