diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java index 2b86f5e109..c4e1cce3ea 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java @@ -476,6 +476,12 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable { public void onRecycle() { resetViewTransforms(); setFullscreenProgress(0); + // Clear any references to the thumbnail (it will be re-read either from the cache or the + // system on next bind) + mSnapshotView.setThumbnail(mTask, null); + if (mTask != null) { + mTask.thumbnail = null; + } } @Override diff --git a/quickstep/src/com/android/quickstep/RecentTasksList.java b/quickstep/src/com/android/quickstep/RecentTasksList.java index 06a36c9f0c..3538373122 100644 --- a/quickstep/src/com/android/quickstep/RecentTasksList.java +++ b/quickstep/src/com/android/quickstep/RecentTasksList.java @@ -119,6 +119,16 @@ public class RecentTasksList extends TaskStackChangeListener { mChangeId++; } + @Override + public void onTaskRemoved(int taskId) { + for (int i = mTasks.size() - 1; i >= 0; i--) { + if (mTasks.get(i).key.id == taskId) { + mTasks.remove(i); + return; + } + } + } + @Override public synchronized void onActivityPinned(String packageName, int userId, int taskId, int stackId) { diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java index 675cfe2ef6..9f12484589 100644 --- a/quickstep/src/com/android/quickstep/RecentsModel.java +++ b/quickstep/src/com/android/quickstep/RecentsModel.java @@ -166,6 +166,12 @@ public class RecentsModel extends TaskStackChangeListener { } } + @Override + public void onTaskRemoved(int taskId) { + Task.TaskKey dummyKey = new Task.TaskKey(taskId, 0, null, null, 0, 0); + mThumbnailCache.remove(dummyKey); + } + public void setSystemUiProxy(ISystemUiProxy systemUiProxy) { mSystemUiProxy = systemUiProxy; } diff --git a/quickstep/src/com/android/quickstep/TaskThumbnailCache.java b/quickstep/src/com/android/quickstep/TaskThumbnailCache.java index d05196bc84..57c5a27833 100644 --- a/quickstep/src/com/android/quickstep/TaskThumbnailCache.java +++ b/quickstep/src/com/android/quickstep/TaskThumbnailCache.java @@ -186,6 +186,13 @@ public class TaskThumbnailCache { mCache.evictAll(); } + /** + * Removes the cached thumbnail for the given task. + */ + public void remove(Task.TaskKey key) { + mCache.remove(key); + } + /** * @return The cache size. */