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,用于系统服务进行创建、启动和其他声明周期管理;
- 启动其他系统服务
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2018-03-28 1067. Sort with Swap(0,*) (25)
2018-03-28 1037. Magic Coupon (25)