Android应用程序进程启动流程
2022-01-15 14:04:33 0 举报
AI智能生成
Android应用程序进程启动流程
作者其他创作
大纲/内容
AMS向Zygote进程发送启动请求
准备参数
uid(用户id)
gids(用户组id)
entryPoint(android.app.ActivityThread)
与Zygote进程建立Socket连接
并匹配ABI,得到ZygoteState对象
并匹配ABI,得到ZygoteState对象
通过ZygoteState写入准备的启动参数(ZygoteState为表示与Zygote的通信状态,这样Zygote进程就会收到请求)
Zygote接收请求并创建应用程序进程
获取应用程序进程启动参数
通过fork当前进程创建一个子进程(即应用程序进程)
在子进程中启动Binder线程池
启动Binder线程池标志设为true
创建一个Binder线程
将这个Binder线程注册到Binder驱动程序中,这样我们创建的线程就加入了Binder线程池
通过抛异常、捕获异常的方式调用ActivityThread的main方法(即应用程序进程创建完毕并运行于主线程的管理类ActivityThread)
创建主线程Looper(Lopper.prepareMainLooper)
创建ActivityThread并调用attach()
通过ActivityManager获取AMS调用AMS的attachApplication()
创建H类(mainThreadHandler)
开启消息循环(Looper.loop())
收藏
0 条评论
下一页