Android系统启动流程(二)解析Zygote进程启动过程
2024-10-10 16:50:09
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进程。
最新文章
- Boostrap入门(一)
- Newtonsoft.Json 序列化和反序列化 时间格式
- 转:jquery选择器总结
- C中的volatile用法
- gcc常用指令及相关知识
- loadrunner 打印变量
- (《数论及应用1.3》NEFU 116 两仪剑法(最小公倍数&;&;最大公约数))
- Icon specified in the Info.plist not found under the top level app wrapper: Icon.png
- ios晃动检测
- 淡淡de馨香---职业尊严
- ";最大工作进程数";导致的WCF调用失败
- angularJS 判断
- Linux设备中的并发控制
- webservice接口的开发和调用
- Redis入门到高可用(十五)—— HyperLogLog
- markdown上下左右,跳至行尾行首,重设快捷键
- memcpy in place 数组内拷贝
- 10.Appium驱动app报错
- Java获取随机数获取制定范围指定个数不重复的随机数
- VC++实现解析快捷方式
热门文章
- LabVIEW(十一):条件结构的巧用
- ASP.NET Core 2.2中的Endpoint路由
- LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
- Spring Cloud Finchley 正式发布,包含 4 个重大更新!
- Spring中新建记录后返回自增主键的处理方法
- 关于c++11中的thread库
- 【LeetCode】7. 整数反转python3
- 【sping揭秘】19、关于spring中jdbctemplate中的DataSource怎么来呢
- vi/vim编辑器的使用
- 用Eclipse导入Maven工程