管道机制是一种单向通讯机制。传递数据是具有单向性的。所以又称为半双工管道。
*数据只能由一个进程流向另一个进程(一个进程负责写管道,一个进程负责读管道) *管道只适用于具有血缘关系的进程 (父子进程、兄弟进程)。 *管道流通的数据是无格式的字节流。所以需要双方约定好数据格式 所以如果想进程间相互通讯的话, 必须建立两条管道。信号作为进程间通信在liunx 系统中很常见,比如系统向正在运行的进程发送kill命令 (参数为进程的pid,以及信号sig),正在运行的进程接收到指令后自己结束自己。 一般情况下信号会储存在系统的信号列表中,自定义信号也可以实现,只不过我没做过。 而信号相比较管道优点就在于异步通讯。 正在运行的进程不知道什么时候获取到信号。等到有信号了,再去处理相关逻辑。 而管道就不可以了。管道通讯的时候,当管道里面没有数据,进程必须wait,等到管道里面有了数据再读取数据
用于发送和接收广播!实现信息的发送和接收! 该方式只是接收到一个广播消息,主要的业务逻辑代码是在自己的onReceive()方法里面实现的。
那么它的优点是:注册了这个广播接收器的应用都能够收到广播,范围广。缺点是:速度慢点,而且必须在一定时间内把事情处理完(onReceive执行必须在几秒之内),否则的话系统给出ANR。用于不同程序将服务的相互调用!实现了一个程序为另一个程序服务的功能!业务逻辑代码在远程的服务中,通过aidl来调用。
优点是:速度快(系统底层binder机制),性能稳,效率高,一般进程间通信就用它。用于将程序的数据库人为地暴露出来!实现一个程序可以对另个程序的数据库进行相对用的操作!主要是用来将自己的数据库共享出来供别的程序调用或者修改。
因为只是把自己的数据库暴露出去,其他程序都可以来获取数据,数据本身不是实时的,不像前两者,只是启个数据供应作用。一般是某个成熟的应用来暴露自己的数据用的。 你要是为了进程间通信,还是别用这个了,这个又不是实时数据。