android: 广播机制

记得在我上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校 的广播室的,一旦有什么重要的通知,就会播放一条广播来告知全校的师生。类似的工作机 制其实在计算机领域也有很广泛的应用,如果你了解网络通信原理应该会知道,在一个 IP 网络范围中最大的 IP 地址是被保留作为广播地址来使用的。比如某个网络的 IP 范围是

192.168.0.XXX,子网掩码是 255.255.255.0,那么这个网络的广播地址就是 192.168.0.255。 广播数据包会被发送到同一网络上的所有端口,这样在该网络中的每台主机都将会收到这条 广播。

为了方便于进行系统级别的消息通知,Android 也引入了一套类似的广播消息机制。相 比于我前面举出的两个例子,Android 中的广播机制会显得更加的灵活,本章就将对这一机 制的方方面面进行详细的讲解。

为什么说 Android 中的广播机制更加灵活呢?这是因为 Android 中的每个应用程序都可 以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广 播可能是来自于系统的,也可能是来自于其他应用程序的。Android 提供了一套完整的 API, 允许应用程序自由地发送和接收广播。发送广播的方法其实之前稍微有提到过一下,如果你 记性好的话可能还会有印象,就是借助我们第 2 章学过的 Intent。而接收广播的方法则需要 引入一个新的概念,广播接收器(Broadcast Receiver)。

广播接收器的具体用法将会在下一节中做介绍,这里我们先来了解一下广播的类型。

Android 中的广播主要可以分为两种类型,标准广播和有序广播。

标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的 广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可 言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。标准广播的工作流程如 图 5.1 所示。

图   5.1

 

有序广播(Ordered broadcasts)则是一种同步执行的广播,在广播发出之后,同一时刻 只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广 播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先 收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器 就无法收到广播消息了。有序广播的工作流程如图 5.2 所示。

 

图   5.2

 

posted @ 2016-02-03 08:42  dodo-yufan  阅读(309)  评论(0编辑  收藏  举报