diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 158175f4b0d95..7bd8b0b3209a1 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -2328,6 +2328,9 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo return true; } + // TODO: We should add ActivityRecord.shouldBeVisible() that checks if the activity should + // be visible based on the stack, task, and lockscreen state and use that here instead. The + // method should be based on the logic in ActivityStack.ensureActivitiesVisibleLocked(). // Skip updating configuration for activity is a stack that shouldn't be visible. if (stack.shouldBeVisible(null /* starting */) == STACK_INVISIBLE) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index 056fec5265026..2b4cb8dbefd8f 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -550,15 +550,11 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta boolean kept = true; if (updatedConfig) { final ActivityRecord r = topRunningActivityLocked(); - if (r != null) { + if (r != null && !deferResume) { kept = r.ensureActivityConfigurationLocked(0 /* globalChanges */, preserveWindow); - - if (!deferResume) { - // All other activities must be made visible with their correct configuration. - mService.mStackSupervisor.ensureActivitiesVisibleLocked(r, 0, !PRESERVE_WINDOWS); - if (!kept) { - mService.mStackSupervisor.resumeFocusedStackTopActivityLocked(); - } + mService.mStackSupervisor.ensureActivitiesVisibleLocked(r, 0, !PRESERVE_WINDOWS); + if (!kept) { + mService.mStackSupervisor.resumeFocusedStackTopActivityLocked(); } } }