1、跨进程的原理
跨进程通信必须经过第三方介质,要么是内存,要么是外存(文件)  以内核为例:进程A将自己的数据拷贝到内核中,进程B在将内核中的数据拷贝到进程B中。
问:跨进程通信需要内核的支持,Binder不是内核的一部分,为什么可以支持跨进程通信? 答:Binder采用了Linux的动态内核可加载模块机制,将Binder作为一个内核模块加载到了内核空间,这个模块叫Binder驱动
Binder采用了Linux中的内存映射技术,减少了数据的拷贝次数,提高了效率  
2、Binder通信过程中涉及到的模型
Binder驱动:类似电话线路Binder:电话号码Client:代表打电话的人Server:代表接电话的人ServerManager:代表114号码台
过程:接电话的人(Server)告诉114号码台(ServerManager)自己的号码(Binder),打电话的人(Client)向114号码台(ServerManager)查询某个人的号码(Binder),查询到后,给对方打电话。整个通信过程由电话线路(Binder驱动支持)。   
3、Java中看具体的类
- 服务端需要关心的:
IInterface:对外提供的服务需要继承这个接口,表示接口中的方法可以跨进程提供服务IBinder:需要跨进程传输的对象要实现这个类,表示该对象可以跨进程传输(类似于用IBinder包装了一下),具体由Binder实现 - 客户端需要关心的:
ServiceConnection:从中拿到Binder对象,从Binder中解析出传输的对象。
|