diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/RecentsActivity.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/RecentsActivity.java index 7b8ec4d886..e0e20ee27e 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/RecentsActivity.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/RecentsActivity.java @@ -89,9 +89,13 @@ public final class RecentsActivity extends BaseRecentsActivity { int taskID = intent.getIntExtra(EXTRA_TASK_ID, 0); IBinder thumbnail = intent.getExtras().getBinder(EXTRA_THUMBNAIL); if (taskID != 0 && thumbnail instanceof ObjectWrapper) { - ThumbnailData thumbnailData = ((ObjectWrapper) thumbnail).get(); + ObjectWrapper obj = (ObjectWrapper) thumbnail; + ThumbnailData thumbnailData = obj.get(); mFallbackRecentsView.showCurrentTask(taskID); mFallbackRecentsView.updateThumbnail(taskID, thumbnailData); + // Clear the ref since any reference to the extras on the system side will still + // hold a reference to the wrapper + obj.clear(); } } intent.removeExtra(EXTRA_TASK_ID); diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java index 56c2dd5dbd..6e7214e108 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java @@ -485,6 +485,11 @@ public abstract class RecentsView extends PagedView impl public void setOverviewStateEnabled(boolean enabled) { mOverviewStateEnabled = enabled; updateTaskStackListenerState(); + if (!enabled) { + // Reset the running task when leaving overview since it can still have a reference to + // its thumbnail + mTmpRunningTask = null; + } } public void onDigitalWellbeingToastShown() { diff --git a/src/com/android/launcher3/util/ObjectWrapper.java b/src/com/android/launcher3/util/ObjectWrapper.java index b69243117a..e5b4707074 100644 --- a/src/com/android/launcher3/util/ObjectWrapper.java +++ b/src/com/android/launcher3/util/ObjectWrapper.java @@ -25,7 +25,7 @@ import android.os.IBinder; */ public class ObjectWrapper extends Binder { - private final T mObject; + private T mObject; public ObjectWrapper(T object) { mObject = object; @@ -35,6 +35,10 @@ public class ObjectWrapper extends Binder { return mObject; } + public void clear() { + mObject = null; + } + public static IBinder wrap(Object obj) { return new ObjectWrapper<>(obj); }