AndroidDevGpt

Android FrameWork(二)

2023-04-13  本文已影响0人  Mr_不靠谱_先森

Android FrameWork(二)

Zygote


知识回顾:

源码分析:

app_main.cpp: 创建AppRuntime extents AndroidRunTime
ZygoteInit.java: 创建ZygoteServer
preload() 预加载


拓展知识:

然后调用gcAndFinalize()

preloadClass :

Zygote 初始化native state
关闭线程限制
创建服务端new ZygoteServer:
forkSystemServer
循环等待,等待客户端请求链接进行处理

倒序方式,优先处理已经建立的连接请求,后处理新建立的连接

forkAndSpecialize :
pid=0 子线程

ProcessState 进程信息
创建进程信息 开启线程池 打开binder


总结:

app_main.cpp中
1,执行Main
2,创建AppRuntime
3,调用runtime.start
(com.android.internal.os.zygoteinit)
AndroidRuntime_AppRuntime.cpp中
4,startVim 创建java虚拟机
5,startReg注册JNI环境
6,通过jni调用唤起zygoteInit.main
zygoteInit.main中
7,forkSystemServer 创建systemserver
8,preload 预加载资源文件 包括activity fragment drawable 等
9,runSelectLoop 循环等待客户端请求链接
10,客户端连接的时候调用processOneCommand
Zygoteconnection.java中
11, native层。forkAndSpecialize fork子进程
12,handleChildProc 处理子进程 关闭socket
13,ProcessState 进程信息
创建进程信息 开启线程池 打开binder
14,RuntimeInit.applicaitonInit 对函数进行包装 然后进行一个返回
15,调用main函数

上一篇 下一篇

猜你喜欢

热点阅读