SystemServer 进程启动系统服务方式

* startBootstrapServices(); // 启动引导服务
* startCoreServices(); // 启动核心服务
* startOtherServices(); // 启动其他服务

SystemServer 进程启动系统服务方式

SystemServer 进程启动系统服务有两种方式,分别是 SystemServiceManager 的startService 方式和 ServiceManager 的 addService 方式。

  1. ServiceManager.addService("scheduling_policy", new SchedulingPolicyService());
  2. Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
  3. mSystemServiceManager.startService(TelecomLoaderService.class);

startService 方式

通过 SystemServiceManager 的startService(Class<T> serviceClass)用于启动继承于SystemService抽象类的服务。

主要功能如下:

  • 通过反射创建对应的 SystemService ,并调用其 onStart 方法。
  • 同时将创建是 SystemService 添加到 SystemServiceManager 的 mService 集合变量中。

addService 方式

通过 ServiceManager 的addService(String name, IBinder service)用于初始化继承于 IBinder 的服务。

主要功能如下:

  • 将对应服务的 Binder 对象添加到 SystemManager 中去。

之前有学习到 ServiceManager 是系统服务的管家,通过它来获得其他服务。然而,在启动系统服务时,有些服务竟然没有 addService 注册到 ServiceManager 中去。

事实上,有些服务即使在启动时没有注册进去,在启动之后也会注册到 ServiceManager 中去。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值