diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 489eb77729e3d..f374c09db285b 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -1309,8 +1309,12 @@ final class ActivityRecord { state == ActivityState.RESUMED; } - public void setSleeping(boolean _sleeping) { - if (sleeping == _sleeping) { + void setSleeping(boolean _sleeping) { + setSleeping(_sleeping, false); + } + + void setSleeping(boolean _sleeping, boolean force) { + if (!force && sleeping == _sleeping) { return; } if (app != null && app.thread != null) { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 2722e275c00d3..b4303c50296c2 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -4512,15 +4512,6 @@ final class ActivityStack { return true; } - // TODO: We could probably make the condition below just check that the activity state is - // stopped, but also checking the sleep state for now to reduce change impact late in - // development cycle. - if (mService.isSleepingOrShuttingDownLocked() && r.state == ActivityState.STOPPED) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, - "Skipping config check (stopped while sleeping): " + r); - return true; - } - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Ensuring correct configuration: " + r); diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 1cb83d282c4c2..c559b84bd7fd4 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3708,6 +3708,12 @@ public final class ActivityStackSupervisor implements DisplayListener { void activityRelaunchedLocked(IBinder token) { mWindowManager.notifyAppRelaunchingFinished(token); + if (mService.isSleepingOrShuttingDownLocked()) { + final ActivityRecord r = ActivityRecord.isInStackLocked(token); + if (r != null) { + r.setSleeping(true, true); + } + } } void activityRelaunchingLocked(ActivityRecord r) {