android 6.0 源码纵向分析 (开机流程)
在 android 纵向上主要是分析开机的启动流程, 如图所示. 这个过程从 Init 启动开始, 到 Launcher 主界面显示结束.
首先, Init 进程启动 Zygote.SurfaceFlinger,Vold, 等 Native 进程, 当 SurfaceFlinger 进程被 Init 进程启动之后, 它会去启动开机动画程序 bootanimation,Init 进程在启动 SurfaceFlinger 进程的同时也会启动 Zygote 进程, 当 Zygote 进程启动之后会启动 SystemServer 进程, 而 SystemServer 进程启动了核心服务 AMS,WMS,PMS 等, 这些服务支撑了整个上层的应用程序, 当 SystemServer 进程中的核心服务 AMS 启动好之后, AMS 会启动 android 应用程序 Launcher,Launcher 会加载所有的应用图标到界面上, Launcher 启动完成后, AMS 会请求 SurfaceFlinger 退出开机动画, 开机动画一退出, Launcher 界面就显示出来了
UML 图:
Init 进程
Init 进程
- surfaceFlinger
- surfaceFlinger
- bootanimation
- bootanimation
- Zygote:
- Zygote:
- Zygote
- Zygote
- Systemserver
- Systemserver
- Launcher
- Launcher
- start
- stop
AMS 请求 stop
AMS 请求 start
来源: http://www.92to.com/bangong/2018/08-26/34043563.html