Move/Launch task on the TaskView's display.
Add ActivityOptions#setLaunchDisplayId to the display that the TaskView
is currently on. So the task will be moved to the display as the user is
interactiving with.
Bug: 183461428
Test: Manually tested using Exo. Open appliction(e.g.Calculator) on
Exo virtual display, and tapping on the phone's recents to bring the
application back to phone.
The demo video https://drive.google.com/file/d/1JMncvsI-VPosK4ql2xeVA8csVAF7Rb16/view?usp=sharing&resourcekey=0-PYRw1k3KdtY0-KZNo6OqjQ
Change-Id: Iaed5aed4d698b71b0d0fc2b78843f4aedd586ecb
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index a3b9c6f..dbda949 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -654,6 +654,7 @@
TestLogging.recordEvent(
TestProtocol.SEQUENCE_MAIN, "startActivityFromRecentsAsync", mTask);
ActivityOptionsWrapper opts = mActivity.getActivityLaunchOptions(this, null);
+ opts.options.setLaunchDisplayId(getRootViewDisplayId());
if (ActivityManagerWrapper.getInstance()
.startActivityFromRecents(mTask.key, opts.options)) {
RecentsView recentsView = getRecentsView();
@@ -694,6 +695,7 @@
// Indicate success once the system has indicated that the transition has started
ActivityOptions opts = ActivityOptionsCompat.makeCustomAnimation(
getContext(), 0, 0, () -> callback.accept(true), MAIN_EXECUTOR.getHandler());
+ opts.setLaunchDisplayId(getRootViewDisplayId());
if (freezeTaskList) {
ActivityOptionsCompat.setFreezeRecentTasksList(opts);
}
@@ -1505,6 +1507,10 @@
mDigitalWellBeingToast.setBannerColorTint(tintColor, amount);
}
+ private int getRootViewDisplayId() {
+ return getRootView().getDisplay().getDisplayId();
+ }
+
/**
* We update and subsequently draw these in {@link #setFullscreenProgress(float)}.
*/