关于zygote总结

来源:互联网 发布:win7禁止软件自动更新 编辑:程序博客网 时间:2024/04/29 23:20

zygote在Android系统中创建Java世界的盘古,创建第一个Java虚拟机,产生了framework的核心system_server进程

1、创建AppRuntime对象,并调用他的start,此后的活动由AppRuntime控制。

2、调用startVm创建Java虚拟机,然后调用startReg来注册JNI函数。

3、通过JNI调用com.android.internal.os.ZygoteInit类的main函数,进入Java世界,但这个世界刚开始啥也没有。

4、调用registerZygoteSocket.通过这个函数,它可以响应子孙后代的请求,同时zygote调用preloadClasses和preloadResources,为Java世界添砖加瓦。

5、zygote觉得自己的工作压力大了,变通过调用startSystemServer分裂一个子进程system_server来为java世界服务。

6、zygote调用runSelectLoopMode--等待并处理来自客户的消息,后便睡去。

zygote随时守护在我们周围,当接收子孙后代的请求后,它会随时醒来为它们工作。

zygote分裂的总结P88


system_server通过调用handleSystemServerProcess完成自己的使命——>handleSystemServerProcess抛出异常,最终调用com.android.server.SystemServer的main函数---->main函数加载libandroid_server.so并调用native的init1函数----->init1函数通过JNI调用com.android.server.SystemServer的init2函数,init2函数创建一个线程,用于加载各类service——>init1函数最终加入Binder通信系统。

0 0
原创粉丝点击