APP开发实战157-Ordered broadcast(有序广播)简介
来源:互联网 发布:平面设计需要什么软件 编辑:程序博客网 时间:2024/05/22 12:06
18.3.3有序广播(Orderedbroadcast)
有序广播的有序广播中的“有序”是针对广播接收者而言的,指的是发送出去的广播被BroadcastReceiver按照先后循序接收。有序广播的定义过程与普通广播无异,发送函数为:sendOrderedBroadcast。
有序广播的主要特点如下:
A多个当前已经注册且有效的BroadcastReceiver接收有序广播时,是按照AndroidManifest.xml文件中定义receiver时,intent-filter的 android:priority属性值从大到小排序,如果没有定义priority的数值,则按在AndroidManifest.xml文件中声明的顺序接收广播。
<receiverandroid:name=".EamBroadcastReceiver">
<intent-filterandroid:priority="1000">
<actionandroid:name="com.eam.read"/>
<actionandroid:name="com.eam.write" />
</intent-filter>
</receiver>
B当广播接收器收到广播后,广播会自动传递到下一个接收器,当前的接收器也可以使用setResultData函数添加数据传给下一个接收器;使用getStringExtra
函数获取广播的原始数据,通过getResultData函数取得上个广播接收器自己添加的数据,并可用abortBroadcast函数让系统丢弃该广播,使该广播不再被别的接收器接收到。
示例代码如下:
//AndroidManifest.xm文件中添加广播接收器声明
<receiverandroid:name="com.ruwant.eam.broadcast.EamOrderBroadcastReceiver">
<intent-filter>
<actionandroid:name="com.eam.read"/>
<actionandroid:name="com.eam.write" />
</intent-filter>
</receiver>
<receiver android:name="com.ruwant.eam.broadcast.EamSecondOrderBroadcastReceiver">
<intent-filter>
<actionandroid:name="com.eam.read"/>
<actionandroid:name="com.eam.write" />
</intent-filter>
</receiver>
//发送广播
public voidsendOrderBroadCast() {
Intent intent = new Intent();
intent.setAction("com.eam.read");
intent.putExtra("data","test");
sendOrderedBroadcast(intent,null);
}
//第一个广播接收器
public classEamOrderBroadcastReceiver extends BroadcastReceiver {
private static final String TAG ="EamOrderBroadcastReceiver";
@Override
public void onReceive(Contextcontext, Intent intent) {
// TODO Auto-generated methodstub
String strMsg = intent.getStringExtra("data");//获取广播的原始数据
setResultData("添加数据:"+strMsg); // 广播接收器自己添加的数据
}
}
//第二个广播接收器
public classEamSecondOrderBroadcastReceiver extends BroadcastReceiver {
private static final String TAG ="EamSecondOrderBroadcastReceiver";
@Override
public void onReceive(Contextcontext, Intent intent) {
// TODO Auto-generated methodstub
String strMsg =intent.getStringExtra("data"); //获取广播的原始数据
strMsg = getResultData();//获取上个广播接收器添加的数据
//通知系统丢弃该广播
abortBroadcast();
}
}
- APP开发实战157-Ordered broadcast(有序广播)简介
- Ordered Broadcast有序广播
- Android Ordered Broadcast 有序广播
- APP开发实战75-Local Broadcast:App应用内广播
- Android 为什么要设立有序广播 Ordered Broadcast
- APP开发实战158-局部广播(Local Broadcast)
- Broadcast详解:有序广播
- 有序广播Ordered broadcasts的使用
- APP开发实战72-广播机制概述
- APP开发实战159-广播的安全性
- ordered broadcast
- APP开发实战74-广播发送及广播类型
- 发送一条普通广播 有序广播 Broadcast 和 Receiver
- APP开发实战24-HTTP协议简介
- APP开发实战78-Fragment简介
- APP开发实战103-缓存简介
- APP开发实战110-ProGuard简介
- APP开发实战76-广播机制相关API重要变迁
- hdu 1213How Many Tables
- Java线程安全和非线程安全
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Java读取外部资源的方法
- 使用Fragment,建立一个没有滑动效果的切换,可配合抽屉使用
- APP开发实战157-Ordered broadcast(有序广播)简介
- mysql5.7无法启动 服务没有报告任何错误
- 16蓝桥杯入门—圆的面积
- 剑指offer 链表中倒数第k个节点
- Struts要点(码盲自学中)
- Linux 堆、栈
- 微信小程序-navigator 跳转url传递参数
- Reason: image not found
- Java读取外部资源的方法