一.自定义有序广播
1.概念
有序广播:可以设置他的顺序,可以设置优先级。
因为1号接收者是动态(优先级要比2号高)的,2号接收者是静态的。所以1号先收到消息
如果非要让2号先收到,就设置2号的优先级
有序广播还可以实现一个功能:可以改变广播的内容
2.具体代码实现
a.发送者
MainActivity.java
关键代码如下
sendOrderedBroadcast(intent,null);
运行效果
b.接收者2号(静态的)
关键代码
<receiver android:name=".MyReceiver02">
<intent-filter
android:priority="1000"><!--取值:负1000到正1000 取值越大优先级越高-->
<action android:name="com.zking.android21_sender.Hug"></action>
</intent-filter>
</receiver>
c.接收者1号(静态的)
intentFilter.setPriority(998);
运行:
运行效果如下:
二.改变广播内容
改变1号接收者收到的内容
2号先收到,所以在2号接收者里面
先运行2号,点返回,在运行1号,点Home。再在发送者里面写发送的内容.
因为2号先收到,收到之后改内容
接收者2号关键代码
Bundle bundle=new Bundle();
bundle.putString("newContent",content+",开玩笑的,你阔以免费拥有,不需要花费");
setResultExtras(bundle);
//给1号接收者
接收者1号关键代码
//获取结果
Bundle bundle=getResultExtras(true);
String content=bundle.getString("newContent");
Log.i("test","广播接受者1号:"+content);
运行:先运行接收者2号,点返回。再运行接收者1号,点Home键。再在发送者里面写发送的内容。
运行效果如下:
三.阻止广播传播
关键代码如下:
abortBroadcast();