Call split finish callback if split invocation fails
Bug: 295981634
Test: Splitting w/ Google TV widget no longer
keeps placeholder views on screen
Flag: ENABLE_SPLIT_WORKSPACE_TO_WORKSPACE
Change-Id: I1d4df9deb9aaaaeef3741a05130429d0091293e8
diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java
index 21c0059..e377896 100644
--- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java
+++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java
@@ -37,6 +37,7 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.NonNull;
+import android.annotation.UiThread;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.ActivityThread;
@@ -603,13 +604,13 @@
private final int mInitialTaskId;
private final int mSecondTaskId;
- private Consumer<Boolean> mSuccessCallback;
+ private Consumer<Boolean> mFinishCallback;
RemoteSplitLaunchTransitionRunner(int initialTaskId, int secondTaskId,
@Nullable Consumer<Boolean> callback) {
mInitialTaskId = initialTaskId;
mSecondTaskId = secondTaskId;
- mSuccessCallback = callback;
+ mFinishCallback = callback;
}
@Override
@@ -628,11 +629,7 @@
TaskViewUtils.composeRecentsSplitLaunchAnimator(mLaunchingTaskView, mStateManager,
mDepthController, mInitialTaskId, mSecondTaskId, info, t, () -> {
finishAdapter.run();
- if (mSuccessCallback != null) {
- mSuccessCallback.accept(true);
- mSuccessCallback = null;
- }
- resetState();
+ cleanup(true /*success*/);
});
});
}
@@ -645,6 +642,22 @@
@Override
public void onTransitionConsumed(IBinder transition, boolean aborted)
throws RemoteException {
+ MAIN_EXECUTOR.execute(() -> {
+ cleanup(false /*success*/);
+ });
+ }
+
+ /**
+ * Must be called on UI thread.
+ * @param success if launching the split apps occurred successfully or not
+ */
+ @UiThread
+ private void cleanup(boolean success) {
+ if (mFinishCallback != null) {
+ mFinishCallback.accept(success);
+ mFinishCallback = null;
+ }
+ resetState();
}
}