安卓中的广播分为无序广播与有序广播。

  • 无序广播
  • 使用sendBroadcast方法发送
  • 被所有广播接收者接收,无序,不可中断
  • 广播时可设置接收者权限,仅当接收者含有权限才能接收
  • 接收者的<receiver>也可设置发送方权限,只接收含有权限应用的广播

  • 有序广播
  • 使用sendOrderedBroadcast方法发送
  • 接收者可以在<intent-filter>中定义android:priority定义优先级,数字越大优先级越高
  • 被各个广播接收者逐个接收,中途可以中断或者添加数据

abortBroadcast()

getResultExtras(true).putString("data","新增数据");



例1.无序广播

Intent intent = new Intent();

intent.setAction("wei.jiang.receiverTest");

intent.putExtra("xx", "hahah");

sendBroadcast(intent);


public class TestReceiver2 extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

String haha = intent.getStringExtra("xx");

System.out.println("TestReceiver1" + haha);

//abortBroadcast();

}

}


public class TestReceiver2 extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

String haha = intent.getStringExtra("xx");

System.out.println("TestReceiver2" + haha);

//abortBroadcast();

}

}

清单文件注册

<receiver android:name="com.example.recivertest.TestReceiver1">

<intent-filter >

<action android:name="wei.jiang.receiverTest"/>

</intent-filter>

</receiver>

<receiver android:name="com.example.recivertest.TestReceiver2">

<intent-filter >

<action android:name="wei.jiang.receiverTest"/>

</intent-filter>

</receiver>

结果:两个都接收到了广播,并打印出广播传过来的数据。


例2,有序广播

public void sendOrder(View v) {

Intent intent = new Intent();

intent.setAction("wei.jiang.receiverTest");

intent.putExtra("xx", "hahah");

sendOrderedBroadcast(intent, null);

}

在receiver1与2中加入abortBroadcast();

分别配置两个的优化级

<receiver android:name="com.example.recivertest.TestReceiver1">

<intent-filter android:priority="100">

<action android:name="wei.jiang.receiverTest"/>

</intent-filter>

</receiver>

<receiver android:name="com.example.recivertest.TestReceiver2">

<intent-filter android:priority="1000">

<action android:name="wei.jiang.receiverTest"/>

</intent-filter>

</receiver>

结果:只有receiver2能接收到消息





更多相关文章

  1. android--理解和使用自定义权限
  2. Mac系统配置Android(安卓)Studio的gradle命令
  3. Android文件访问权限
  4. android ContentProvider实现跨进程文件传输
  5. 微软为Win10开发Android和iOS快速移植工具
  6. android 导入、创建文件到sdcard报错:Failed to push selection:
  7. Android(安卓)MMS模块数据存取数据表
  8. 用tcpdump抓取Android的网络数据包
  9. ANDROID 返回,菜单和HOME键的监听

随机推荐

  1. Android之Service&BroadCastReceiver
  2. Android实现手机静音
  3. android 应用程序退出
  4. Android基础之四大组件---Activity
  5. Android开发之Sqlite的使用
  6. Android(安卓)PopupWindow Dialog 关于 i
  7. Exoplayer2实现边播放边缓存
  8. ANDROID L——Material Design详解(视图和
  9. android的input_event的流程,以及如何获取
  10. 聚焦 Android 11: Jetpack