1. 首页
  2. 移动开发
  3. Android
  4. Android ServiceManager的启动和工作原理

Android ServiceManager的启动和工作原理

上传者: 2021-07-16 11:51:50上传 PDF文件 424.35 KB 热度 37次

ServiceManager启动所有的系统服务都是需要在ServiceManager中进行注册的,而ServiceManager作为一个起始的服务,是通过init.rc来启动的。具体的服务信息是在servicemanger.rc命名并定义的servicemanager的入口函数在service_manager.c中在main函数中主要做了3件事情。binder_loop将servicemanger注册为Binder的上下文管理者后,它就是Binder机制的“大总管”了,它会在系统运行期间处理Client端的请求,因为请求的时间不确定性,这里采用了无限循环来实现。也就是binder_loopservicemanager会先将自己注册为一个Binder线程。因为只有注册成为Binder服务之后才能接收进程间的请求。而注册为Binder服务的指令是BC_ENTER_LOOPER。然后通过**binder_write()**方法写入到binder驱动。这里我们以SurfaceFling获取ServiceManager服务为例来看一下是如何获取的。对于服务的获取,肯定是需要将reply的数据写回到请求服务的进程的。

下载地址
用户评论