diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java index d094c229e0f86..998728d65e6af 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java @@ -129,6 +129,7 @@ public class FullscreenTaskListener implements ShellTaskOrganizer.TaskListener { public void onTaskInfoChanged(RunningTaskInfo taskInfo) { final State state = mTasks.get(taskInfo.taskId); final Point oldPositionInParent = state.mTaskInfo.positionInParent; + boolean oldVisible = state.mTaskInfo.isVisible; if (mWindowDecorViewModelOptional.isPresent()) { mWindowDecorViewModelOptional.get().onTaskInfoChanged(taskInfo); @@ -138,12 +139,18 @@ public class FullscreenTaskListener implements ShellTaskOrganizer.TaskListener { updateRecentsForVisibleFullscreenTask(taskInfo); final Point positionInParent = state.mTaskInfo.positionInParent; - if (!oldPositionInParent.equals(state.mTaskInfo.positionInParent)) { + boolean positionInParentChanged = !oldPositionInParent.equals(positionInParent); + boolean becameVisible = !oldVisible && state.mTaskInfo.isVisible; + + if (becameVisible || positionInParentChanged) { mSyncQueue.runInSync(t -> { if (!state.mLeash.isValid()) { // Task vanished before sync completion return; } + if (becameVisible) { + t.show(state.mLeash); + } t.setPosition(state.mLeash, positionInParent.x, positionInParent.y); }); }