在前面的文章《Android AMS——ATMS解析(四)》中,介绍了 Activity 的启动流程,其中调用到 Task.resumeTopActivityInnerLocked() 时,会先调用 startPausingLocked 暂停前一个 Activity,在启动新的 Activity。 这里我们就看以下 Activity 的暂停流程。
源码位置:/frameworks/base/services/core/java/com/android/server/wm/Task.java
- 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