Merge "Defer removing the task view until the app has drawn" into ub-launcher3-master
diff --git a/quickstep/libs/sysui_shared.jar b/quickstep/libs/sysui_shared.jar
index 17ff858..7ff664d 100644
--- a/quickstep/libs/sysui_shared.jar
+++ b/quickstep/libs/sysui_shared.jar
Binary files differ
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index ee542d5..a0615f5 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -57,6 +57,7 @@
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;
+import com.android.systemui.shared.system.ActivityOptionsCompat;
import java.util.function.Consumer;
/**
@@ -204,11 +205,26 @@
if (animate) {
opts = ((BaseDraggingActivity) fromContext(getContext()))
.getActivityLaunchOptions(this);
+ ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(mTask.key,
+ opts, resultCallback, resultCallbackHandler);
} else {
- opts = ActivityOptions.makeCustomAnimation(getContext(), 0, 0);
+ opts = ActivityOptionsCompat.makeCustomAnimation(getContext(), 0, 0, () -> {
+ if (resultCallback != null) {
+ // Only post the animation start after the system has indicated that the
+ // transition has started
+ resultCallbackHandler.post(() -> resultCallback.accept(true));
+ }
+ }, resultCallbackHandler);
+ ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(mTask.key,
+ opts, (success) -> {
+ if (resultCallback != null && !success) {
+ // If the call to start activity failed, then post the result
+ // immediately, otherwise, wait for the animation start callback
+ // from the activity options above
+ resultCallbackHandler.post(() -> resultCallback.accept(false));
+ }
+ }, resultCallbackHandler);
}
- ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(mTask.key,
- opts, resultCallback, resultCallbackHandler);
}
}