diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java index 6d5aa169ab..9eebf2a684 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java @@ -101,6 +101,7 @@ import com.android.systemui.shared.system.RemoteAnimationRunnerCompat; import com.android.wm.shell.splitscreen.ISplitSelectListener; import java.io.PrintWriter; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -567,13 +568,13 @@ public class SplitSelectStateController { private final int mInitialTaskId; private final int mSecondTaskId; - private final Consumer mSuccessCallback; + private final WeakReference> mSuccessCallback; RemoteSplitLaunchTransitionRunner(int initialTaskId, int secondTaskId, @Nullable Consumer callback) { mInitialTaskId = initialTaskId; mSecondTaskId = secondTaskId; - mSuccessCallback = callback; + mSuccessCallback = new WeakReference<>(callback); } @Override @@ -593,8 +594,8 @@ public class SplitSelectStateController { TaskViewUtils.composeRecentsSplitLaunchAnimator(mLaunchingTaskView, mStateManager, mDepthController, mInitialTaskId, mSecondTaskId, info, t, () -> { finishAdapter.run(); - if (mSuccessCallback != null) { - mSuccessCallback.accept(true); + if (mSuccessCallback.get() != null) { + mSuccessCallback.get().accept(true); } resetState(); });