在安卓系统中,根据广播的执行顺序不同,可分为有序广播和无序广播。
1.有序广播
有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受到这条消息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以,此时的广播接收器是由先后顺序的没并且可以被拦截。工作流程图如下:
2.无序广播
无序广播是一种完全异步执行的广播,在广播发出去之后,所有监听了这个广播事件的广播接收器几乎都会在同一时刻接收到这条广播,它们之间没有任何先后顺序科研,这种广播的效率会比较高,但是同时意味着它是无法被截断的。工作流程图如下:
在实际开发中,可能遇到这种情况:当发出了一个有序广播,然后定义多个接受者接受这条广播。这些广播接收者的优先级有高有低,需要其中一个广播接收者无论如何都要接收到广播事件,哪怕它的优先级是最低的或者广播被优先级高的而接收者强行终结,这时候需要用到sendOrderedBroadcast()方法发送有序广播,代码如下所示:
Intent intent=new Intent();
//定义广播的事件类型
intent.setAction("www.itcast.cn");
//发送有序广播
Receiver03 receiver03=new Receiver03();
sendOrderedBroadcast(intent,null,receiver03,null,0,null,null);
在上述代码中,首先定义出了指定要接受广播的广播接收者的实例。然后用sendOrderedBroadcast重载的方法,这个方法有多个参数,我们只需关注其中两个就可以了,第一个参数接受一个intent,第三个参数就是指定的广播接收者。