Zygote进程
Zygote进程孵化了所有的Android应用进程,是Android Framework的基础,该进程的启动也标志着Framework框架初始化启动的开始。
Zygote服务进程的主要功能:
- 注册底层功能的JNI函数到虚拟机
- 预加载Java类和资源
- fork并启动system_server核心进程
- 作为守护进程监听处理“孵化新进程”的请求
当Zygote进程启动后,便会到framework/base/cmds/app_process/App_main.cpp文件的main()方法。
App_main.main() //设置进程名,并启动 AppRuntime。
AndroidRuntime::start() //创建 Java 虚拟机,注册 JNI 方法,调用 ZygoteInit.main() 方法。
ZygoteInit.main() //为 Zygote 注册 socket,预加载类和资源,启动 system_server 进程。
然后Zygote进程会进入loop状态,等待下次fork进程。
system_server进程
system_server进程由Zygote进程fork而来。接下来看一下system_server进程启动过程:
//首先会调用 ZygoteInit.startSystemServer() 方法
ZygoteInit.startSystemServer()
//fork 子进程 system_server,进入 system_server 进程。
ZygoteInit.handleSystemServerProcess()
//设置当前进程名为“system_server”,创建 PathClassLoader 类加载器。
RuntimeInit.