上QQ阅读APP看书,第一时间看更新
1.3.2 广播类型
1)普通广播:是一种完全异步的广播,发出之后,所有广播接收器都能在同一时刻接收到该广播;优点是传递效率高,缺点是安全性不能保证,因为接收器并不能处理拦截广播。它们的工作流程如图1.9所示。
图1.9 普通广播的工作流程
2)有序广播:是一种同步执行的广播,所以该广播发出后,同一时刻只有一个广播接收器可接收到该广播,并且接收该广播的广播接收器能对该广播进行拦截,如果不拦截,则可继续传给下一个广播接收器。当然,谁先接收该广播也是有分顺序的,就是按照广播接收器的优先级来决定的,是在AndroidManifest.xml文件里注册的接收器中的intent-filter元素的android:priority属性中设置优先级,数越大优先级别越高,取值范围是-1000到1000。也可以调用IntentFilter对象的setPriority()进行设置。如果两个接收器定义的优先级相同怎么办?那么就是动态注册的接收器优先于静态注册的接收器;如果不仅是优先级相同,连注册的方式都一样,那么就是先注册的接收器先接收广播。它们的工作流程如图1.10所示。
图1.10 有序广播的工作流程
3)本地广播:有序广播与普通广播都是全局广播,它们发出的广播都是可以被其他应用程序所接收,而自定义的广播器也能接收它们发过来的广播。而本地广播,则是在一个应用程序内进行传播的,所以定义的广播接收器也只能接收来自该应用程序发来的广播。优点是安全性得到保证,传送的广播不会被其他应用程序接收到。