Jimmy Chen

A Programmer

基于Android 9之应用冷启动过程分析(二)

  上一篇讲到最后会调用到startActivity,接着分析前想先说一下,其实这篇主要的目的还是想先了解点击应用到调用应用第一个Activity.onCreate方法的整个过程,所以中间有一些方法会先放过不分析,下面继续接着上一篇进行分析,先把上一次调用的代码贴出来:

这里参数非常多,而且startActivity还有重载函数,所以在阅读的时候还是要做好区分

上面的代码已经写得很详细了(就是博主能理解的部分都写上去了),值得注意的是FLAG_ACTIVITY_FORWARD_RESULT这个标签,以前只是知道有这个标签,现在看代码可以知道FLAG_ACTIVITY_FORWARD_RESULT是怎么处理的。接下来继续看看startActivity

上面的代码中间会调用到setTargetStackAndMoveToFrontIfNeeded方法对栈进行调整,我们接着分析这个方法

  这上面和我们的目的(startActivity启动Activity到调用Activity的onCreate)相关联的应该就是moveTaskToFrontLocked方法了。moveTaskToFrontLocked方法可以讲Activity所在的任务调到前台,在任务调用前台后Activity才有机会调用起onCreate方法进行显示,下面接着贴代码分析:

上面没什么好说的,主要是调整Activity栈中Activity的位置,接着分析resumeFocusedStackTopActivityLocked方法

resumeTopActivityInnerLocked的内容比较多,需要集中精神慢慢分析:

  上面开始分析到需要通过startSpecificActivityLocked来进行进程的冷启动,下一篇我们会继续分析进程创建过程。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注