ServiceManager(一)简介

C/S(Client/Server)架构的应用在安卓中随处可见;

ServiceManager在安卓中承担着管理Server的责任;

Client在向Server发起请求之前需要先定位Server;

举个形象的例子,工作中需要发邮件,发邮件之前得先在邮箱列表中找到收件人,才可以准确地进行交互;

 

Client如何定位的Server?

ServiceManager可类比为"DNS"服务器,该服务器自身的“IP地址为0”;

ServiceManager帮助Client路由到Server;

 

ServiceManager的是如何启动的?

ServiceManager

http://androidxref.com/9.0.0_r3/xref/system/core/rootdir/init.rc,init.cpp加载init.rc文件时,系统开始加载servicemanager、hwservicemanager、vndservicemanager服务

311on post-fs
312    # Load properties from
313    #     /system/build.prop,
314    #     /odm/build.prop,
315    #     /vendor/build.prop and
316    #     /factory/factory.prop
317    load_system_props
318    # start essential services
319    start logd
320    start servicemanager
321    start hwservicemanager
322    start vndservicemanager

http://androidxref.com/9.0.0_r3/xref/frameworks/native/cmds/servicemanager/servicemanager.rc,该文件中声明了servicemanager服务

#当servicemanager重启后,下面的所有服务都跟着重新启动;
#servicemanager在安卓中的重要性,不言而喻

1service servicemanager /system/bin/servicemanager
2    class core animation
3    user system
4    group system readproc
5    critical
6    onrestart restart healthd
7    onrestart restart zygote
8    onrestart restart audioserver
9    onrestart restart media
10    onrestart restart surfaceflinger
11    onrestart restart inputflinger
12    onrestart restart drm
13    onrestart restart cameraserver
14    onrestart restart keystore
15    onrestart restart gatekeeperd
16    writepid /dev/cpuset/system-background/tasks
17    shutdown critical
18

http

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ServiceManager 是 Android 系统中的一个系统服务,它负责管理系统中所有的服务。它使用 Binder 机制来实现跨进程的服务管理。在 Android 中,所有的服务都是通过 ServiceManager 来进行注册和获取的,这也就是为什么我们可以在不同的应用程序中获取同一个服务的原因。 ServiceManager 的源码位于 frameworks/native/cmds/servicemanager 中,它主要由以下几个文件组成: - ServiceManager.cpp:ServiceManager 的主要实现文件,包含了 ServiceManager 类的定义和实现。 - BpServiceManager.cpp:BpServiceManagerServiceManager 的客户端代理类,它通过 Binder 机制与 ServiceManager 进行通信。 - IServiceManager.cpp:IServiceManagerServiceManager 的接口文件,定义了与 ServiceManager 相关的所有方法。 - IServiceManager.h:IServiceManager 的头文件,定义了 IServiceManager 接口类的定义。 - ServiceManager.h:ServiceManager 的头文件,包含了 ServiceManager 类的定义和一些宏定义。 ServiceManager 的主要实现是在 ServiceManager.cpp 文件中的 ServiceManager 类中。ServiceManager 类主要实现了 IServiceManager 接口类中的所有方法,包括: - addService:用于添加一个服务到 ServiceManager 中,并将服务的名字和服务的 Binder 对象映射起来。 - getService:用于获取一个已注册的服务。 - checkService:用于检查一个服务是否已经注册。 - listServices:用于列出所有已经注册的服务。 ServiceManager 的初始化是在 init_service_manager 函数中完成的,它主要完成了以下几个步骤: - 创建一个 ServiceManager 对象,并将其注册为系统服务。 - 注册系统服务,包括 Package Manager Service、Activity Manager Service、Window Manager Service 等。 - 注册其他系统服务。 总之,ServiceManager 是 Android 系统中非常重要的一个系统服务,它是整个系统中所有服务的管理者。通过 ServiceManager,我们可以方便地获取到系统中已经注册的服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值