android R--activity启动流程分析二

228 阅读1分钟

在已有进程中启动activity

比如:从一个app的 MainActivity跳转到DetailActivity,这时候用户进程已经存在

如果要看在新进程中启动activity,可以参考:juejin.cn/post/711049…

image.png

高清图:www.plantuml.com/plantuml/pn…

到这里AMS端流程,下面看看用户进程是如何执行的。

image.png 高清图:www.plantuml.com/plantuml/pn…

用户进程执行了activity的生命周期,并通知ams 暂停完成了。接下来ams会检查栈顶activity,启动栈顶activity。

image.png

高清图:www.plantuml.com/plantuml/pn…_

接下来就到了用户进程了,到ActivityThread,中间会执行LaunchActivityItem#execute() 接着执行ActivityThread#handleLaunchActivity。AMS通过LaunchActivityIte怎么执行到ActivityThread的handleLaunchActivity(),可以看上面的流程图中的PauseActivityItem。原理一样的。到这里Activity就启动了。