首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

Android源码分析--应用程序启动

应用程序启动,又可称为根Activity的启动。但是在讲应用程序启动之前,我们有必要对应用程序进程(AppProcess)启动有所了解,那是因为启动一个应用程序首先要保证该应用程序的进程已经被启动。...AMS在启动应用程序时,会先检查应用程序进程是否存在,如果不存在就需要请求Zygote进程创建并启动应用程序进程。这里我不会贴上大段大段的代码,只是一些总结,并提供了相关源码的链接。...应用程序进程(AppProcess)启动 启动大纲 AMS发送启动应用程序进程请求. Zygote接收请求并创建应用程序进程....---- 应用程序(App)启动 讲完了应用程序进程(AppProcess)启动的相关内容后,接下来我们就来看看应用程序是如何一步一步启动的。 启动大纲 1.Launcher请求AMS。...---- 应用程序启动的进程关系图 应用程序启动的过程中,主要涉及了Launcher进程、SystemServer进程、Zygote进程和应用程序进程这四个进程,它们之间的关系如下。

53720

应用程序进程启动过程

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线程池中,新创建的应用程序进程就支持

69720

Android应用程序进程启动过程(后篇)

前言 在前篇中我们讲到了Android应用程序进程启动过程,这一篇我们来讲遗留的知识点:在应用程序进程创建过程中会启动Binder线程池以及在应用程序进程启动后会创建消息循环。...注释1调用PoolThread的run函数来启动一个启动一个新的线程。...根据上一篇文章我们得知,mMethod指的就是ActivityThread的main函数,mArgs 指的是应用程序进程的启动参数。...注释1处在当前应用程序进程中创建消息循环,注释2处创建ActivityThread,注释3处调用Looper的loop,使得Looper开始工作,开始处理消息。...可以看出,系统在应用程序进程启动完成后,就会创建一个消息循环,用来方便的使用Android的消息处理机制。

67970
领券