From 2cdc359b84c0a9c5fae396220cf8e2b46f8c6042 Mon Sep 17 00:00:00 2001 From: Iris Yang Date: Mon, 16 Aug 2021 17:24:14 +0000 Subject: [PATCH] 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 --- quickstep/src/com/android/quickstep/views/TaskView.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index a3b9c6f453..dbda9490ca 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -654,6 +654,7 @@ public class TaskView extends FrameLayout implements Reusable { 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 @@ public class TaskView extends FrameLayout implements Reusable { // 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 @@ public class TaskView extends FrameLayout implements Reusable { mDigitalWellBeingToast.setBannerColorTint(tintColor, amount); } + private int getRootViewDisplayId() { + return getRootView().getDisplay().getDisplayId(); + } + /** * We update and subsequently draw these in {@link #setFullscreenProgress(float)}. */