1.发送标准的广播:
注册广播可以在代码中注册,也可以在配置文件中注册。注册之后,发送广播自定义标准广播的格式:
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
sendBroadcast(intent);
intent中的参数为Action。对应的broadcast receiver就是通过这个action来识别的。
注册receiver时会传入action。
如下面动态注册:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.MY_BROADCAST");
changeReceiver = new NetWorkChangeReceiver();
registerReceiver(changeReceiver, intentFilter);
2.可以发现,广播是通过Intent传播的,所以可以在里面传递参数。
3.发送有序的广播:广播是一种可以跨进程的通信方式,因此我们在一个应用中发送广播,别的应用也可以接受到。
a) 如何发送有序广播:只需要改一下发送的代码即可:
i. sendOrderedBroadcast(intent, null);第二个参数传的是权限,可以设置为null;
b) 如何设置broadcastreceiver的优先级:
<intent-filter android:priority="100">
<action android:name="com.example.broadcasttest.MY_BROADCAST" />
</intent-filter>
c) 如何截断在发送过程中的广播,前面接收到广播的接收器,可以调用下面代码截断://前面的接收器可以截断广播
abortBroadcast();
4.使用本地广播:顾名思义就是这个广播只能本应用接收到,可以保证程序的安全性。
只要在广播的发送和注册时加上 LocalBroadcastManager,
需要注意的是,本地广播无法为有序的,也就无法被截断。
并且本地广播无法通过静态的方法进行注册,因为发送本地广播的时候程序肯定是启动的。
本地广播比全局广播更加高效。