在前面的文章《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 onPause
pausing |= startPausingLocked(false /* uiSleeping */, next, "resumeTopActivityInnerLocked");
}
if (next.attachedToP