From 2744acfbf48e30cdfd90e4cbb500e3bfd392a5e3 Mon Sep 17 00:00:00 2001 From: Gustav Sennton Date: Wed, 10 Apr 2024 13:30:23 +0000 Subject: [PATCH] Implement IRecentTasksListener.onRunningTaskChanged() Bug: 332504528 Test: N/A Flag: NA Change-Id: I7c98eb524bb7544a715f5b8226d3c28d05f72913 --- .../android/quickstep/RecentTasksList.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/RecentTasksList.java b/quickstep/src/com/android/quickstep/RecentTasksList.java index 879fccbc9f..711882c7b6 100644 --- a/quickstep/src/com/android/quickstep/RecentTasksList.java +++ b/quickstep/src/com/android/quickstep/RecentTasksList.java @@ -97,6 +97,13 @@ public class RecentTasksList { RecentTasksList.this.onRunningTaskVanished(taskInfo); }); } + + @Override + public void onRunningTaskChanged(ActivityManager.RunningTaskInfo taskInfo) { + mMainThreadExecutor.execute(() -> { + RecentTasksList.this.onRunningTaskChanged(taskInfo); + }); + } }); // We may receive onRunningTaskAppeared events later for tasks which have already been // included in the list returned by mSysUiProxy.getRunningTasks(), or may receive @@ -244,6 +251,20 @@ public class RecentTasksList { } } + private void onRunningTaskChanged(ActivityManager.RunningTaskInfo taskInfo) { + // Find the task from the list of running tasks, if it exists + for (ActivityManager.RunningTaskInfo existingTask : mRunningTasks) { + if (existingTask.taskId != taskInfo.taskId) continue; + + mRunningTasks.remove(existingTask); + mRunningTasks.add(taskInfo); + if (mRunningTasksListener != null) { + mRunningTasksListener.onRunningTasksChanged(); + } + return; + } + } + /** * Loads and creates a list of all the recent tasks. */ @@ -390,4 +411,4 @@ public class RecentTasksList { return mRequestId == requestId && (!mKeysOnly || loadKeysOnly); } } -} \ No newline at end of file +}