在前面的文章《Android AMS——ATMS解析(四)》中,介绍了 Activity 的启动流程,其中调用到 Task.resumeTopActivityInnerLocked() 时,会先调用 startPausingLocked 暂停前一个 Activity,在启动新的 Activity。 这里我们就看以下 Activity 的暂停流程。
一、Activity暂停流程
1、Task
源码位置:/frameworks/base/services/core/java/com/android/server/wm/Task.java
resumeTopActivityInnerLocked
final ActivityTaskSupervisor mTaskSupervisor;private boolean resumeTopActivityInnerLocked(ActivityRecord prev, ActivityOptions options,boolean deferPause) {……if (mResumedActivity != null) {// 将activity onPausepausing |= startPausingLocked(false /* uiSleeping */, next, "resumeTopActivityInnerLocked");}if (next.attachedToP