码迷,mamicode.com
首页 > 系统相关 > 详细

应用程序进程启动过程

时间:2018-12-24 20:54:56      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:alt   stat   就是   存在   请求   执行   应用   获得   就会   

--摘自《Android进阶解密》

1.AMS在启动应用程序时会检查者应用程序需要的应用进程是否存在,不存在就会请求Zygote进程启动需要的应用程序进程

2.Zygote的Java框架层中会创建一个Server端的Socket,这个Socket用来等待AMS请求Zygote来创建新的应用程序进程

3.Zygote进程通过fock自身创建应用程序进程,这样应用程序进程就会获得Zygote进程在启动时创建的虚拟机实例。当然还创建了Binder线程池和消息循环,这样运行在应用进程中的应用程序就可以方便地使用Binder进行进程间通信以及处理消息了

应用程序进程启动过程

第一步:AMS发送启动应用程序进程请求

技术分享图片

第二步:Zygote接收请求并创建应用程序进程

技术分享图片

其中:

4.ZygoteInit类的zygoteInit方法会启动Binder线程池

5.将当前线程注册到Binder驱动程序中,这样我们创建的线程就加入了Binder线程池中,新创建的应用程序进程就支持Binder进程间通信了,我们只需要创建当前进程的Binder对象,并将它注册到ServiceManager中就可以实现Binder进程间通信

6.RuntimeInit的invokeStaticMain方法最后会抛出一个MethodAndArgsCaller异常,抓取异常过程中会执行call.run方法,run方法中会调用mMethod.invoke,其实就是ActivityThread的main方法,main方法中开启了消息循环

应用程序进程启动过程

标签:alt   stat   就是   存在   请求   执行   应用   获得   就会   

原文地址:https://www.cnblogs.com/anni-qianqian/p/10170818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!