Android Framework:Binder(5)-Native Service的跨进程调用
Android Framework:Binder(5)-Native Service的跨进程调用 一、Native Service调用概述 在上一篇Native service的注册就已经可以看到Client端请求Server端的过程,Native Service是Client端,ServiceManager是Server端。 本篇从Native Service调用的角度来学习Client端是如何通过Binder驱动跨进程调用Server端的方法的。还是以Camera Service作为案例分析。 废话不说先上图: 上图主要有以下几个重点: 1. Client端跨进程调用Service端需要先跨进程向ServiceManager进程查询该Service,并获取到该包含该Service的handle值的扁平的binder对象,进而在Client端构造出Service的代理对象,通过该Service代理对象调用Service的方法。 2. Service在初始化时需要跨进程向ServiceManager注册自己,之后搭建了自己的线程池机制不断访问binder驱动查看是否有发向自己的Client端请求。 3. Client,Service,ServiceManager是运行在用户空间的独立进程,binder驱动运行在内核空间