- 以ZygoteInit为启动,main方法的执行。首先执行preload加载系统资源,然后开始fork系统进程,forkSystemServer交由Zygote类执行nativeForkSystemServer
- native方法会来到Zygote.cpp中,这时会执行fork()方法,fork出新的进程来。
- fork出SystemServer的进程后,执行handleSystemServerprocess进行后续的处理。例如,创建binder线程池
- nativeZygoteInit -》 onZygoteInit -》 startThreadPool -》 spawnPooledThread这套流程会创建binder进程
- applicationInit -》 findStaticMain 会给ZygoteInit返回一个MethodAndArgsCaller对象,这个对象会反射执行原对象的mian方法
- 此时SystemServer被创建,main方法中执行了run,创建系统context和其他的SystemService。
Zygote启动SystemServer一图流
最新推荐文章于 2023-07-28 16:12:22 发布