博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android系统启动流程(二)解析Zygote进程启动过程
阅读量:6786 次
发布时间:2019-06-26

本文共 716 字,大约阅读时间需要 2 分钟。

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进程。

转载于:https://www.cnblogs.com/ganchuanpu/p/6213431.html

你可能感兴趣的文章
fork函数
查看>>
ROS语音交互——科大讯飞语音合成TTS(二)
查看>>
为什么要架构?当架构走火入魔时怎么办
查看>>
请说明Java中字符'\'的含义,有什么作用?
查看>>
Jenkins部署Python项目实战
查看>>
.Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南
查看>>
数论5——欧拉定理
查看>>
记一次 Confluence 被攻击事件
查看>>
JavaScript String详解
查看>>
matlab练习程序(求灰度图像最大灰度,最小灰度,平均灰度)
查看>>
spring mvc interceptors
查看>>
SQL中Len与DataLength区别
查看>>
入门Webpack,看这篇就够了
查看>>
Springboot中关于跨域问题的一种解决方法
查看>>
PHP和Apache的安装
查看>>
要让div中的float不会自动显示到下一行来?
查看>>
五种排序方法(选择、冒泡、快排、插入、希尔)
查看>>
位运算及其应用实例(1)
查看>>
解决cocos2d 热更是连不上https服务器
查看>>
vim相关
查看>>