ipc:interprocess communication
作为Android系统的核心机制,Binder几乎贯穿整个Android系统。
Binder工作流程:
1. 客户端首先获得服务器的代理对象,所谓的代理对象实际上就是在客户端建立一个服务器端的“引用“,该代理对象具有服务端的功能,使其在客户端访问服务端的方法就像访问本地方法一样。
2. 金额护短通过调用服务器代理对象的方式向服务端发送请求。
3. 代理对象将用户请求通过Bindler驱动发送到服务器进程。
4. 服务器进程处理用户请求,并通过Binder驱动返回处理结果给客户端的服务器代理对象。
5. 客户端收到服务器端的返回结果。
服务:
服务的本质就是响应客户端的请求。要提供服务,就必须建立接受请求,处理请求,应答客户端的框架。因此任何一个服务都必然存在一个循环监听,处理请求的过程。
需要自己实现一个核心服务时应该注意:
1. 核心服务通畅在独立的进程里执行。
2. 必须提供IBinder接口,让应用程序可以跨进程绑定和呼叫。
3. 因为共享所以要确保多线程安全。
4. 以C++类别定义,获取其对象,通过ServiceManager的协助,将该对象参考值传给IserviceManager::addService()函数,加入到BinderDrive里。
5. 应用程序可通过ServiceManager的协助远距离绑定该核心服务,此时ServiceManager会传回Bindler接口给应用程序。
6. 应用程序可通过Ibinder::transact()函数与核心服务互传数据。
使用方法直接参考http://android.blog.51cto.com/268543/537684,讲解的十分详细。
http://blog.csdn.net/singwhatiwanna/article/details/17041691 有补充