概述
当我们在启动 Android 系统时,会经历哪些步骤呢,从我们看到的角度来说
- 按下开机键,显示开机动画/图片
- 开机动画显示完毕,进入桌面显示 loading(早期的手机比较明显)
- 桌面等待消失,显示出应用图标
那么从我们程序员的角度来看,这几个步骤具体是经过了哪些事情呢
- 手机开机,启动引导程序(硬件方面)
- 硬件方面处理完毕,加载一个 main 方法,启动 init 进程
- init 进程启动完毕,孵化出 Zygote 进程,而自己开始进行 loop 循环(处理系统进程意外挂掉等事件)
- zygote 进程初始化,启动 Java 虚拟机,开始执行 Java 代码
- Zygote 做完自己的工作,孵化出 SystemServer 进程,开始 loop 循环
- SystemServer 启动系统服务,并在服务启动完的时候启动 Launch 进程
- Launch 进程启动,加载安装的 apk,并显示
系统启动完毕
接下来,我们就根据这些系统启动中的关键节点,来看看 android 系统启动的详细过程