Android SystemServer 启动流程

SystemServer 启动流程

一、介绍

  1. SystemServer 是 Android 进入 Launcher 前的最后准备,顾名思义,它提供了众多由 Java 语言编写的服务
  2. 在 Zygote 自启动过程中,参数 bool startSystemServer 为真的话,那么在 ZygoteInit.java/main() 就会调用函数 forkSystemServer() 生成 SystemServer 进程并启动
  3. SystemServer 进程主要用于创建系统服务,ActivityMangerService、PackageManagerService、WindowManagerService 这些重要服务都是通过 SystemServer 进程启动

SystemServer 从 frameworks/base/core/java/com/android/internal/os/ZygoteInit.java/ZygoteInit.java/forkSystemServer() 中开始研究

二、创建 SystemServer

image

三、处理 SystemServer

image

启动 Binder 线程池

  • nativeZygoteInit() 是 Native 层代码,用于启动 Binder 线程池,以便 SystemServer 进程使用 Binder 与其他进程通信

image

进入 SystemServer 的 main()

image

四、解析 SystemServer 进程

image

服务启动举例

以 PowerManagerService 服务启动为例

image

五、总结

  1. 启动 Binder 线程,以便后续与其他进程通信
  2. 创建 SystemServiceManager,用于系统服务进行创建、启动和其他声明周期管理;
  3. 启动其他系统服务
posted @   王清河  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2018-03-28 1067. Sort with Swap(0,*) (25)
2018-03-28 1037. Magic Coupon (25)
点击右上角即可分享
微信分享提示