Android SystemServer 启动流程
SystemServer 启动流程
一、介绍
- SystemServer 是 Android 进入 Launcher 前的最后准备,顾名思义,它提供了众多由 Java 语言编写的服务
- 在 Zygote 自启动过程中,参数
bool startSystemServer为真的话,那么在ZygoteInit.java/main()就会调用函数forkSystemServer()生成 SystemServer 进程并启动 - SystemServer 进程主要用于创建系统服务,ActivityMangerService、PackageManagerService、WindowManagerService 这些重要服务都是通过 SystemServer 进程启动
SystemServer 从 frameworks/base/core/java/com/android/internal/os/ZygoteInit.java/ZygoteInit.java/forkSystemServer() 中开始研究
二、创建 SystemServer

三、处理 SystemServer

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

进入 SystemServer 的 main()

四、解析 SystemServer 进程

服务启动举例
以 PowerManagerService 服务启动为例

五、总结
- 启动 Binder 线程,以便后续与其他进程通信
- 创建 SystemServiceManager,用于系统服务进行创建、启动和其他声明周期管理;
- 启动其他系统服务

浙公网安备 33010602011771号