Android可以选择进程通信方式,有以下三种:
1.标准linux Kernel IPC接口
2.标准D-BUS接口
3.Binder接口
Android中使用做多是Binder驱动。它主要实现下面的功能:
1.用驱动程序来提高性能
2.通过共享内存来提高性能
3.为进程请求分配每个线程池
4.针对系统中的对象引入了计数和跨进程的对象引用映射。
5.进程间同步调用
工作原理
使用binder_ioctl()函数与用户空间进程交换数据。BINDER_WRITE_READ用来读写数据,数据包中的cmd域来区分不同的请求。使用binder_thread_write()函数来发送请求或返回结果,使用binder_thread_read()函数来读取结果。binder_thread_write()函数中,通过调用binder_transaction()函数来转发请求并返回结果。
工作流程
1.客户端首先获得服务器端的代理对象。所谓的代理对象实际上就是在客户端建立一个服务端的引用,该代理对象具有服务器端的功能,使其在客户端访问服务端的方法就像访问本地方法一样。
2.客户端通过调用服务器代理对象的方式向服务器端发送请求。
3.代理对象将用户请求通过binder驱动发送到服务器进程。
4.服务器进程处理用户请求,并通过binder驱动返回处理结果给客户端的服务器代理对象。
5.客户端收到服务器端的返回结果。