前言
今天在看安卓广播机制的时候,无意中看到一个一本书中提到标准广播是异步执行的广播,而有序广播是同步执行的广播。虽然以前对同步和异步通信有所了解,但是感觉在不同的应用场景下总是容易混淆,所以今天查了查资料,做个小总结。
1. 困惑?
安卓的标准广播机制是一种完全异步执行的广播,异步的特点在于广播发出之后,所有的广播接收器都能在几乎同一时刻接受这条广播消息,没有先后顺序,不会被截断。
有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受这条广播消息。当这个接收器完成逻辑任务之后,才会继续向后传递广播,优先级高的接收器最先收到消息,并且前面的广播接收器可以截断广播。
可以看出,这里的同步和异步是根据广播接受者的特点,或者说广播的特点来区分的。我们先不深入讨论,先了解同步异步的基本概念。
2. 概念详解
正如上面所说,同步和异步在不同场景下的区分特点可能是不同的,我先给出最常见的同步和异步的概念。
2.1. 进程中的同步和异步
(1)进程同步
进程同步就是发出一个功能调用时,在没得到结果之前,该调用就不返回。也就是做完一个任务才会继续下一个任务(此处就和安卓广播的同步和异步有点相似了)。同步调用是一种有序执行的过程。最常见的同步调用就是sendMessage(),这个函数发消