1.Zygote简介

在Android系统中,DVM(Dalvik虚拟机)、应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程来创建的,我们也将它称为孵化器。它通过fock(复制进程)的形式来创建应用程序进程和SystemServer进程,由于Zygote进程在启动时会创建DVM,因此通过fock而创建的应用程序进程和SystemServer进程可以在内部获取一个DVM的实例拷贝。 
关于init启动zygote我们在上一篇文章已经提到了,这里就不赘述了,这篇文章主要分析Android7.0 Zygote的启动流程。

2.AppRuntime分析

3.Zygote的Java框架层

上文我们通过JNI调用ZygoteInit的main函数后,Zygote便进入了Java框架层,此前没有任何代码进入过Java框架层,换句换说Zygote开创了Java框架层。

4.Zygote进程总结

Zygote启动流程就讲到这,Zygote进程共做了如下几件事: 
1.创建AppRuntime并调用其start方法,启动Zygote进程。 
2.创建DVM并为DVM注册JNI. 
3.通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层。 
4.通过registerZygoteSocket函数创建服务端Socket,并通过runSelectLoop函数等待ActivityManagerService的请求来创建新的应用程序进程。 
5.启动SystemServer进程。

最新文章

  1. Boostrap入门(一)
  2. Newtonsoft.Json 序列化和反序列化 时间格式
  3. 转:jquery选择器总结
  4. C中的volatile用法
  5. gcc常用指令及相关知识
  6. loadrunner 打印变量
  7. (《数论及应用1.3》NEFU 116 两仪剑法(最小公倍数&&最大公约数))
  8. Icon specified in the Info.plist not found under the top level app wrapper: Icon.png
  9. ios晃动检测
  10. 淡淡de馨香---职业尊严
  11. "最大工作进程数"导致的WCF调用失败
  12. angularJS 判断
  13. Linux设备中的并发控制
  14. webservice接口的开发和调用
  15. Redis入门到高可用(十五)—— HyperLogLog
  16. markdown上下左右,跳至行尾行首,重设快捷键
  17. memcpy in place 数组内拷贝
  18. 10.Appium驱动app报错
  19. Java获取随机数获取制定范围指定个数不重复的随机数
  20. VC++实现解析快捷方式

热门文章

  1. LabVIEW(十一):条件结构的巧用
  2. ASP.NET Core 2.2中的Endpoint路由
  3. LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
  4. Spring Cloud Finchley 正式发布,包含 4 个重大更新!
  5. Spring中新建记录后返回自增主键的处理方法
  6. 关于c++11中的thread库
  7. 【LeetCode】7. 整数反转python3
  8. 【sping揭秘】19、关于spring中jdbctemplate中的DataSource怎么来呢
  9. vi/vim编辑器的使用
  10. 用Eclipse导入Maven工程