程序员Android开发Android 技术开发

Activity启动流程

2019-01-18  本文已影响142人  小彤花园

引言

Activity启动流程很多文章都已经说过了,这里说一下自己的理解。

涉及到的概念

涉及到的类

流程图

涉及到的进程

具体流程

参考函数流程

Activity启动流程(从Launcher开始):
Step1~Step5: Step1-Step5通知ActivityManagerService要启动新的Activity了(在Launcher所在进程执行)。

Step6~Step12: Step6-Step12通知Launcher程序应该pause Launcher的Activity了(在ActivityManagerService所在进程执行)

Step13~Step17: pause Launcher的Activity,并通知ActivityManagerService已经pause结束了(在Launcher所在进程执行)

Step18~Step23 创建一个新进程,调用ActivityThread.main方法(执行在ActivityManagerService进程)

step18-step23:创建一个新进程,调用ActivityThread.main方法(执行在ActivityManagerService进程)。这其中,ActivityManagerService会先检查目标Activity所需的应用进程是否存在,如果存在,就直接通知这个进程,在该进程中启动Activity,否则,会先调用Process.start创建一个新的应用程序进程。
注:这里就是与在同一个进程中启动Activity的区别之处

Step24~Step25: 创建ActivityThread实例,初始化一些数据,进入Loop循环(执行在新创建的进程)

Step26~Step29: 处理新的应用进程发出的创建进程完成的通信请求,并通知新应用程序进程启动目标Activity组件(执行在ActivityManagerService进程)

Step30~Step35: 加载MainActivity类,调用onCreate声明周期方法(执行在新进程)

参考文章

http://gityuan.com/2016/03/12/start-activity/
https://blog.csdn.net/luoshengyang/article/details/6689748

上一篇下一篇

猜你喜欢

热点阅读