http://h529820165.iteye.com/blog/1656778
普通广播(Normal Broadcast):
一,优缺点:和有序广播的优缺点相反!
二,发送广播的方法:sendBroadcast()
有序广播(Ordered Broadcast):
一,优缺点
优点:1,按优先级的不同,优先Receiver可对数据进行处理,并传给下一个Receiver
2,通过abortBroadcast可终止广播的传播
缺点:效率低
二,发送广播的方法:sendOrderedBroadcast()
三,优先接收到Broadcast的Receiver可通过setResultExtras(Bundle)方法将处理结果存入Broadcast中,
下一个Receiver 通过 Bundle bundle=getResultExtras(true)方法获取上一个Receiver传来的数据
广播还可以分为 全局广播和本地广播
全局广播:发出去的广播可以被任何应用程序接收到,也可以接受来自任何应用程序的广播
本地广播:使用LocalBroadcaseManager对广播进行管理,
LocalBroadcastManager manager=LocalBroadcastManager.getInstance(context);
IntentFilter filter=new IntentFilter();
filter.addAction("com.example.chainOfResponsibility");
manager.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "onReceive", Toast.LENGTH_SHORT).show();
}
}, filter);
通过LocalBroadcastManager 的getInstance()方法得到了它的一个实例,然后在注册广播接收器的时候调用的是LocalBroadcastManager
的registerReceiver()方法。
<span style="font-size:12px;"> Intent intent=new Intent();
intent.setAction("com.example.chainOfResponsibility");
manager.sendBroadcast(intent);</span>
发送广播的时候调用的是LocalBroadcastManager 的sendBroadcast()方法。
本地广播和全局广播的一大区别就是,本地广播不能通过静态的方式来注册接受。其实这也可以理解,因为静态注册是要是让程序在未启动的情况下也能接受广播,发送本地广播的时候程序可定启动了。