Android App启动流程

1.通过 Launcher 启动应用时,点击应用图标后,Launcher 调用 startActivity 启动应用。

2.Launcher Activity 最终调用 Instrumentation 的 execStartActivity 来启动应用。

3.Instrumentation 调用 ActivityManagerProxy (ActivityManagerService 在应用进程的一个代理对象) 对象的 startActivity 方法启动 Activity。

4.到目前为止所有过程都在 Launcher 进程里面执行,接下来 ActivityManagerProxy 对象跨进程调用 ActivityManagerService (运行在 system_server 进程)的 startActivity 方法启动应用。

5.ActivityManagerService 的 startActivity 方法经过一系列调用,最后调用 zygoteSendArgsAndGetResult 通过 socket 发送给 zygote 进程,zygote 进程会孵化出新的应用进程。

6.zygote 进程孵化出新的应用进程后,会执行 ActivityThread 类的 main 方法。在该方法里会先准备好 Looper 和消息队列,然后调用 attach 方法将应用进程绑定到 ActivityManagerService,然后进入 loop 循环,不断地读取消息队列里的消息,并分发消息。

7.ActivityManagerService 保存应用进程的一个代理对象,然后 ActivityManagerService 通过代理对象通知应用进程创建入口 Activity 的实例,并执行它的生命周期函数。

相关推荐
_一条咸鱼_32 分钟前
揭秘 Android ListView:从源码深度剖析其使用原理
android·面试·android jetpack
_一条咸鱼_33 分钟前
深入剖析 Android NestedScrollView 使用原理
android·面试·android jetpack
_一条咸鱼_33 分钟前
揭秘 Android ScrollView:深入剖析其使用原理与源码奥秘
android·面试·android jetpack
_一条咸鱼_34 分钟前
深入剖析 Android View:从源码探寻使用原理
android·面试·android jetpack
_一条咸鱼_34 分钟前
揭秘 Android View 绘制原理:从源码剖析到极致理解
android·面试·android jetpack
_一条咸鱼_35 分钟前
揭秘 Android FrameLayout:从源码深度剖析使用原理
android·面试·android jetpack
_一条咸鱼_36 分钟前
深度剖析 Android ViewPager:从源码探究其使用原理
android·面试·kotlin
_一条咸鱼_37 分钟前
揭秘 Android ViewGroup:从源码深度剖析使用原理
android·面试·android jetpack
_一条咸鱼_37 分钟前
揭秘 Android TabLayout:从源码深度剖析使用原理
android·面试·android jetpack
_一条咸鱼_39 分钟前
深入剖析 Android RecyclerView 的使用原理
android·面试·android jetpack