diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 03effe761d771..4af6435d3a5cd 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -1315,8 +1315,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 6f7e748d67891..055cd57806b29 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -4535,15 +4535,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 8e0fcc187af68..647c2ec777d81 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3730,6 +3730,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) {