6.1 广播机制简介
为什么说 Android 中的广播机制更加灵活呢?这是因为 Android 中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会收到自己所关心的广播内容,这些广播可能是来自 于系统的,也可能是来自于其他应用程序的。Android 提供了一套完整的 API,允许应用程序自由地发送和接收广播。发送广播的方法其实之前稍微提到过,如果你记性好的话,可能还会有印象,就是借助我们第 3 章学过的 Intent 。而接收广播的方法则需要引入一个新的概念—— BroadcastReceiver 。
BroadcastReceiver 的具体用法将会在下一节介绍,这里我们先来了解一下广播的类型。 Android 中的广播主要可以分为两种类型:标准广播和有序广播。
- 标准广播(normal broadcasts )是一种完全异步执行的广播,在广播发出之后,所有的 BroadcastReceiver 几乎会在同一时刻收到这条广播消息,因此它们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。标准广播的工作 流程如 图6.1 所示。
- 有序广播(ordered broadcasts )则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个 BroadcastReceiver 能够收到这条广播消息,当这个 BroadcastReceiver 中的逻辑执行完毕后,广播才会继续传递。所以此时的 BroadcastReceiver 是有先后顺序的, 优先级高的BroadcastReceiver 就可以先收到广播消息,并且前面的 BroadcastReceiver 还可以截断正在传递的广播,这样后面的 BroadcastReceiver 就无法收到广播消息了。有序广播的工作流程如图6.2 所示。
掌握了这些基本概念后,我们就可以来学习广播的用法了,首先从接收系统广播开始吧。