【Android系列2.0 进程 --- SystemManager服务】

ServiceManager作为Android系统中Binder IPC的ContextManager,负责通过服务名称返回Binder句柄。它在init进程中启动,由init.rc配置,并在Shell、Native和Java层提供访问接口。主要代码位于frameworks/base/cmds/servicemanager,初始化过程涉及binder_open、binder_become_context_manager和binder_loop。ServiceManager作为守护进程,处理来自Client的addService、checkService和listServices请求。
摘要由CSDN通过智能技术生成

ServiceManager服务

  • Binder进行IPC时的ContextManager
    • 通过service的名称,返回binder的句柄,使Client进行IPC
  • 由init进程扫描init.rc启动的二进制可执行文件
    • 就是linux下的 程序软件,通过init.rc脚本配置成 开机启动
service servicemanager /system/bin/servicemanager
    class core
    user system
    group system
    critical
    onrestart restart healthd
    onrestart restart zygote
    onrestart restart media
    onrestart restart surfaceflinger
    onrestart restart drm
  • 其自身句柄为0
  • 在Shell,Native和Java层都有获取ServiceManager的方法
//Shell: service service_name method_name method_param
adb shell service call phone ***

//Native
sp<IServiceManager> defaultServiceManager()

//Java
android.os.ServiceManagerNative
android.os.ServiceManager
Context.getSystemService
  • 代码 frameworks/base/cmds/servicemanager 目录下的binder.h, binder.c, service_manager.c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值