diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 1ba7e687a5537..861961599ada8 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -4715,6 +4715,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { mTaskChangeNotificationController.notifyTaskFocusChanged(prevTask.mTaskId, false); } mTaskChangeNotificationController.notifyTaskFocusChanged(task.mTaskId, true); + mTaskSupervisor.mRecentTasks.add(task); } applyUpdateLockStateLocked(r); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java index eed32d7d815c3..bb20244aee914 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java @@ -248,6 +248,19 @@ public class ActivityTaskSupervisorTests extends WindowTestsBase { eq(true) /* focused */); } + /** + * Ensures it updates recent tasks order when the last resumed activity changed. + */ + @Test + public void testUpdateRecentTasksForTopResumed() { + spyOn(mSupervisor.mRecentTasks); + final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build(); + final Task task = activity.getTask(); + + mAtm.setLastResumedActivityUncheckLocked(activity, "test"); + verify(mSupervisor.mRecentTasks).add(eq(task)); + } + /** * Ensures that a trusted display can launch arbitrary activity and an untrusted display can't. */