diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 62d70d2fa799c..951b9a94e4e5e 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -747,6 +747,14 @@ final class ActivityStack { return true; } + if (hasVisibleBehindActivity()) { + // Stop visible behind activity before going to sleep. + final ActivityRecord r = mActivityContainer.mActivityDisplay.mVisibleBehindActivity; + mStackSupervisor.mStoppingActivities.add(r); + if (DEBUG_STATES) Slog.v(TAG, "Sleep still waiting to stop visible behind " + r); + return true; + } + return false; } @@ -1006,7 +1014,7 @@ final class ActivityStack { // the current instance before starting the new one. if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Destroying after pause: " + prev); destroyActivityLocked(prev, true, "pause-config"); - } else if (!hasVisibleBehindActivity()) { + } else if (!hasVisibleBehindActivity() || mService.isSleepingOrShuttingDown()) { // If we were visible then resumeTopActivities will release resources before // stopping. mStackSupervisor.mStoppingActivities.add(prev);