Zygote 本身是一個Native的應用程式,剛開始的進程名稱為「app_process」,運行過程中,通過調用 setArgv0 將名字改為 zygote 或者 zygote64 (根據作業系統而來),最後通過 runtime 的 start() 方法來真正的加載虛擬機並進入JAVA世界
1. 初始化DDMS
2. 注册Zygote进程的Socket
3. 加载class、resource、OpenGL、WebView等各种资源
4. fork出SystemServer进程
5. 启动SystemServer进程
6. 调用runSelectLoop()一直监听Socket信息
7. 收到创建应用程序Socket消息,调用ZygoteConnection#runOnce()。在runOnce()中调用Zygote#forkAndSpecialize()创建应用进程
8. 启动应用进程
No comments:
Post a Comment