1.4 Zygote启动流程
启动流程
- 解析init.zygote.rc中的参数, 创建AppRuntime并调用AppRuntime#start方法
- 调用AndroidRuntime的startVM()方法创建虚拟机, 再调用startReg注册JNI函数
- 通过JNI方式调用ZygoteInit#main(), 第一次进入Java世界
- registerZygoteSocket()建立socket通道, zygote作为通信的服务端, 响应客户端请求
- preload()预加载通用类, drawable和color资源, OpenGL, 共享库以及WebView, 用于提升app启动效率
- zygote完毕大部分工作, 接下来再通过startSystemServer(), fork得力帮手system_server进程, 也是上层framework的运行载体
- zygote功成身退, 调用runSelectLoop(),等待创建进程请求