当前位置: 老葡京网站娱乐 > 操作系统 > 手机系统 > 正文

android如何实现进程间通信

时间:2016-08-23 csdn博客 a910626

一.使用bundle

老葡京网站娱乐 www.sdguanhua.com 当我们在一个进程中启动了另一个进程的activity、service、receiver,我们就可以在bundle中附加我们需要传输给远程进程的信息并通过intent发送出去。

我们传输的数据要必须能被序列化.

以上原理都是bundle

当然service也是支持通过intent启动来传递数据的

这种方案是一种最最简单的进程间通信

二.使用文件共享

三.使用Messenger

1.简介

Messenger的底层是aidl

2.Aidl和messager的区别

原因是AIDL可以处理多线程、多客户端并发访问的,而Messenger只能是单线程处理。

Messenger、AIDL、Binder这三个东西的关系是这样的: AIDL是对Binder的封装,Messenger是对AIDL的封装,就是为了更好的方便开发者在不同场景下使用进程间通信。

四.使用AIDL

1.aidl的基础

aidl常?;诎蠖ǚ?,aidl底层是binder

绑定服务不属于跨进程,所以不要和aidl混合起来使用,只是说ipc时如使用aidl方式常常使用绑定服务。

2.aidl原理

基于proxy_stub模式说明,具体参以前博客。

3.具体流程

?。?!其实最核心的是aidl接口的定义。

服务端

1. 服务端首先要创建一个service用来监听客户端的链接请求

2. 然后创建一个aidl文件,将暴露给客户端的接口在这个aidl文件中声明。

3. 最后在service中实现这个aidl即可。

客户端

1. 客户端所要做的事情就稍微简单一些,首先需要绑定服务端的service,

2. 绑定成功后,将服务端返回的binder对象转成aidl接口所属的类型,

3. 接着就可以调用aidl中的方法了。

上边描写的只是一个感性的过程,aidl的实现过程远不止这么简单。

4.一个例子

见:

https://github.com/zhujainxipan/MyApplication

http://android.jobbole.com/80789/

五.使用ContentProvider

六.使用socket

URL:http://www.sdguanhua.com/OS/extra/201608/50387.htm