From d8e1d912cb24397db3171efc713e3f04199bf40f Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Fri, 31 Mar 2023 14:24:08 +0800 Subject: [PATCH] Check resumed state of activity before skipping resuming The activity may be paused state for pre-Q apps with 2 activities on different display. When touching the display to switch focus, it relied on setFoucusedTask to be resumed. Bug: 275508603 Test: MultiDisplayPolicyTests#testPreQTopProcessResumedDisplayMoved Change-Id: Ic84aaa5f4cdaa818805452333b69052760ffd2a8 --- .../java/com/android/server/wm/ActivityTaskManagerService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index bbdaa24a694ce..12fe6a0dba257 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -100,6 +100,7 @@ import static com.android.server.wm.ActivityInterceptorCallback.MAINLINE_LAST_OR import static com.android.server.wm.ActivityInterceptorCallback.SYSTEM_FIRST_ORDERED_ID; import static com.android.server.wm.ActivityInterceptorCallback.SYSTEM_LAST_ORDERED_ID; import static com.android.server.wm.ActivityRecord.State.PAUSING; +import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_ALL; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_ROOT_TASK; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_SWITCH; @@ -2011,7 +2012,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { return; } - if (r == mRootWindowContainer.getTopResumedActivity()) { + if (r.isState(RESUMED) && r == mRootWindowContainer.getTopResumedActivity()) { setLastResumedActivityUncheckLocked(r, "setFocusedTask-alreadyTop"); return; }