From a439c912d8f3f9770fcff3941ce5fc4ec08cca2e Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Tue, 10 Oct 2023 20:42:42 -0700 Subject: [PATCH] Null out context for all split controllers * Destroy context for AppPairsController and SplitSelectDataHolder Bug: 302551868 Change-Id: I5636ecf50d51ad383ac89a457697984bc8d907ca --- .../quickstep/util/AppPairsController.java | 6 +++++- .../quickstep/util/SplitSelectDataHolder.kt | 15 ++++++++------- .../util/SplitSelectStateController.java | 2 ++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/quickstep/util/AppPairsController.java b/quickstep/src/com/android/quickstep/util/AppPairsController.java index 8888831ef8..cc3b54b0ca 100644 --- a/quickstep/src/com/android/quickstep/util/AppPairsController.java +++ b/quickstep/src/com/android/quickstep/util/AppPairsController.java @@ -61,7 +61,7 @@ public class AppPairsController { private static final int BITMASK_SIZE = 16; private static final int BITMASK_FOR_SNAP_POSITION = (1 << BITMASK_SIZE) - 1; - private final Context mContext; + private Context mContext; private final SplitSelectStateController mSplitSelectStateController; private final StatsLogManager mStatsLogManager; public AppPairsController(Context context, @@ -72,6 +72,10 @@ public class AppPairsController { mStatsLogManager = statsLogManager; } + void onDestroy() { + mContext = null; + } + /** * Creates a new app pair ItemInfo and adds it to the workspace */ diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt b/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt index 95f1fbf458..423ba43037 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt +++ b/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt @@ -54,7 +54,7 @@ import java.io.PrintWriter * state */ class SplitSelectDataHolder( - val context: Context + var context: Context? ) { val TAG = SplitSelectDataHolder::class.simpleName @@ -100,6 +100,10 @@ class SplitSelectDataHolder( private var initialShortcut: ShortcutInfo? = null private var secondShortcut: ShortcutInfo? = null + fun onDestroy() { + context = null + } + /** * @param alreadyRunningTask if set to [android.app.ActivityTaskManager.INVALID_TASK_ID] * then @param intent will be used to launch the initial task @@ -164,18 +168,15 @@ class SplitSelectDataHolder( } private fun getShortcutInfo(intent: Intent?, user: UserHandle?): ShortcutInfo? { - val intentPackage = intent?.getPackage() - if (intentPackage == null) { - return null - } + val intentPackage = intent?.getPackage() ?: return null val shortcutId = intent.getStringExtra(ShortcutKey.EXTRA_SHORTCUT_ID) ?: return null try { val context: Context = if (user != null) { - context.createPackageContextAsUser(intentPackage, 0 /* flags */, user) + context!!.createPackageContextAsUser(intentPackage, 0 /* flags */, user) } else { - context.createPackageContext(intentPackage, 0 /* *flags */) + context!!.createPackageContext(intentPackage, 0 /* *flags */) } return ShortcutInfo.Builder(context, shortcutId).build() } catch (e: PackageManager.NameNotFoundException) { diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java index 45c63b2bc8..46ecc5600d 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java @@ -186,6 +186,8 @@ public class SplitSelectStateController { public void onDestroy() { mContext = null; mActivityBackCallback = null; + mAppPairsController.onDestroy(); + mSplitSelectDataHolder.onDestroy(); } /**