init进程启动过程
引入:
- 启动电源以及系统启动
- 引导程序BootLoader
- Linux内核启动
- init进程启动
主要工作:
- 创建和挂载启动所需的文件目录
- 初始化和启动属性服务(以键值对的形式记录用户、软件的一些使用信息,用来初始化)
- 解析init.rc配置文件并启动Zygote进程
Zygote进程启动过程
主要工作:
- 创建AppRuntime并调用其start方法,启动Zygote进程
- 创建Java虚拟机并为Java虚拟机注册JNI方法
- 通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层
- 通过registerZygoteSocket方法创建服务器端Socket,并通过runSelectLoop方法等待AMS的请求来创建新的应用程序进程
- 启动SystemServer进程
SystemServer处理过程
主要工作:
- 启动Binder线程池,这样就可以与其他进程进行通信
- 创建SystemServiceManager,其用于对系统的服务进行创建、启动和生命周期管理
- 启动各种系统服务
Launcher启动过程
被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到桌面上