diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java index b38666522754b..f8f0211e108f5 100644 --- a/services/core/java/com/android/server/wm/RecentTasks.java +++ b/services/core/java/com/android/server/wm/RecentTasks.java @@ -338,7 +338,8 @@ class RecentTasks { synchronized (mService.mGlobalLock) { final Task focusedStack = mService.getTopDisplayFocusedRootTask(); final Task topTask = focusedStack != null ? focusedStack.getTopMostTask() : null; - resetFreezeTaskListReordering(topTask); + final Task reorderToEndTask = topTask != null && topTask.hasChild() ? topTask : null; + resetFreezeTaskListReordering(reorderToEndTask); } } diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java index 9ebc7307418d4..10f4158205e6a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java @@ -924,6 +924,11 @@ public class RecentTasksTest extends WindowTestsBase { @Test public void testFreezeTaskListOrder_timeout() { + for (Task t : mTasks) { + // Make all the tasks non-empty + new ActivityBuilder(mAtm).setTask(t).build(); + } + // Add some tasks mRecentTasks.add(mTasks.get(0)); mRecentTasks.add(mTasks.get(1));