diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 3469e2fab0..d3ac4110f1 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -562,6 +562,11 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer, mSplitSelectStateController.onDestroy(); } + RecentsView recentsView = getOverviewPanel(); + if (recentsView != null) { + recentsView.destroy(); + } + super.onDestroy(); mHotseatPredictionController.destroy(); if (mViewCapture != null) mViewCapture.close(); diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java index 9c4d9bfc06..5e8ea374fd 100644 --- a/quickstep/src/com/android/quickstep/RecentsActivity.java +++ b/quickstep/src/com/android/quickstep/RecentsActivity.java @@ -452,6 +452,10 @@ public final class RecentsActivity extends StatefulActivity implem @Override protected void onDestroy() { + RecentsView recentsView = getOverviewPanel(); + if (recentsView != null) { + recentsView.destroy(); + } super.onDestroy(); ACTIVITY_TRACKER.onContextDestroyed(this); mActivityLaunchAnimationRunner = null; diff --git a/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowManager.kt b/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowManager.kt index e22736cfd8..5d99aec543 100644 --- a/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowManager.kt +++ b/quickstep/src/com/android/quickstep/fallback/window/RecentsWindowManager.kt @@ -163,6 +163,7 @@ class RecentsWindowManager(context: Context) : TaskStackChangeListeners.getInstance().unregisterTaskStackListener(taskStackChangeListener) callbacks?.removeListener(recentsAnimationListener) recentsWindowTracker.onContextDestroyed(this) + recentsView?.destroy() } override fun startHome() { diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 770a6597f0..892b89d666 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -1238,8 +1238,15 @@ public abstract class RecentsView< mSplitSelectStateController.unregisterSplitListener(mSplitSelectionListener); } reset(); + } + + /** + * Execute clean-up logic needed when the view is destroyed. + */ + public void destroy() { + Log.d(TAG, "destroy"); if (enableRefactorTaskThumbnail()) { - mHelper.onDetachedFromWindow(); + mHelper.onDestroy(); RecentsDependencies.destroy(); } } diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewModelHelper.kt b/quickstep/src/com/android/quickstep/views/RecentsViewModelHelper.kt index d92c4d06fd..ff711da70f 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsViewModelHelper.kt +++ b/quickstep/src/com/android/quickstep/views/RecentsViewModelHelper.kt @@ -32,8 +32,8 @@ class RecentsViewModelHelper( private val recentsCoroutineScope: CoroutineScope, private val dispatcherProvider: DispatcherProvider, ) { - fun onDetachedFromWindow() { - recentsCoroutineScope.cancel("RecentsView detaching from window") + fun onDestroy() { + recentsCoroutineScope.cancel("RecentsView is being destroyed") } fun switchToScreenshot(