在已有进程中启动activity
比如:从一个app的 MainActivity跳转到DetailActivity,这时候用户进程已经存在
如果要看在新进程中启动activity,可以参考:juejin.cn/post/711049…
高清图:www.plantuml.com/plantuml/pn…
到这里AMS端流程,下面看看用户进程是如何执行的。
高清图:www.plantuml.com/plantuml/pn…
用户进程执行了activity的生命周期,并通知ams 暂停完成了。接下来ams会检查栈顶activity,启动栈顶activity。
高清图:www.plantuml.com/plantuml/pn…_
接下来就到了用户进程了,到ActivityThread,中间会执行LaunchActivityItem#execute() 接着执行ActivityThread#handleLaunchActivity。AMS通过LaunchActivityIte怎么执行到ActivityThread的handleLaunchActivity(),可以看上面的流程图中的PauseActivityItem。原理一样的。到这里Activity就启动了。