You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
android-notes/blogs/Android/口水话/系统启动流程.md

13 lines
1.2 KiB

---
系统启动流程口水话
---
#### 核心内容
当我们按下电源时,系统启动后会加载引导程序、启动 Linux 内核,在 Linux 内核加载完成后,第一件事就是要启动 init 进程。
init 进程启动后会解析 init.rc 文件,fork 出 ServiceManager、SurfaceFlinger、Zygote 等进程。在 Zygote 进程中,会创建 JVM 并为 JVM 注册 JNI 方法,然后就可以通过 JNI 调用 ZygoteInit 的 main 函数进入 Zygote 的 Java 框架层。在这个 main 方法中首先会创建一个 Server 端的 Socket,然后预加载类和资源,接着启动 SystemServer 进程,最后就在一个 loop 循环中去等待 AMS 请求创建应用程序进程。
SystemServer 进程主要用于创建系统服务,比如 AMS、WMS、PMS 等都是由它来创建的。
系统启动的最后一步是启动一个应用程序来显示系统中已经被安装的应用程序,这个应用程序就叫 Launcher。Launcher 在启动过程中会请求 PMS 返回系统中已经安装的应用程序信息,并将这些信息封装成一个快捷图标列表展示在系统屏幕上,这样用户就可以点击这些快捷图标来启动相应地应用程序了。