diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index c5ac451a95391..b5c19a8954137 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -85,12 +85,6 @@ "group": "WM_DEBUG_ADD_REMOVE", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, - "-1953668890": { - "message": "Can't start recents animation, nextAppTransition=%s", - "level": "DEBUG", - "group": "WM_DEBUG_RECENTS_ANIMATIONS", - "at": "com\/android\/server\/wm\/RecentsAnimation.java" - }, "-1949279037": { "message": "Attempted to add input method window with bad token %s. Aborting.", "level": "WARN", @@ -889,12 +883,6 @@ "group": "WM_DEBUG_ORIENTATION", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, - "-242787066": { - "message": "addTaskToRecentsAnimationIfNeeded, control: %s, task: %s, transit: %s", - "level": "DEBUG", - "group": "WM_DEBUG_RECENTS_ANIMATIONS", - "at": "com\/android\/server\/wm\/WindowContainer.java" - }, "-198463978": { "message": "updateRotationUnchecked: alwaysSendConfiguration=%b forceRelayout=%b", "level": "VERBOSE", @@ -1135,6 +1123,12 @@ "group": "WM_DEBUG_ORIENTATION", "at": "com\/android\/server\/wm\/DisplayRotation.java" }, + "210750281": { + "message": "applyAnimationUnchecked, control: %s, task: %s, transit: %s", + "level": "DEBUG", + "group": "WM_DEBUG_RECENTS_ANIMATIONS", + "at": "com\/android\/server\/wm\/Task.java" + }, "221540118": { "message": "mUserActivityTimeout set to %d", "level": "DEBUG", @@ -1543,24 +1537,12 @@ "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowToken.java" }, - "845234215": { - "message": "App is requesting an orientation, return %d for display id=%d", - "level": "VERBOSE", - "group": "WM_DEBUG_ORIENTATION", - "at": "com\/android\/server\/wm\/DisplayContent.java" - }, "853091290": { "message": "Moved stack=%s behind stack=%s", "level": "DEBUG", "group": "WM_DEBUG_RECENTS_ANIMATIONS", "at": "com\/android\/server\/wm\/RecentsAnimation.java" }, - "854237232": { - "message": "addTaskToRecentsAnimationIfNeeded, control: %s, task: %s, transit: %s", - "level": "DEBUG", - "group": "WM_DEBUG_RECENTS_ANIMATIONS", - "at": "com\/android\/server\/wm\/Task.java" - }, "873914452": { "message": "goodToGo()", "level": "DEBUG", diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index c8ea7ceee57e1..3ad11af4d587d 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -407,14 +407,6 @@ public class AppTransition implements Dump { return mNextAppTransitionType == NEXT_TRANSIT_TYPE_OPEN_CROSS_PROFILE_APPS; } - boolean isNextAppTransitionCustomFromRecents() { - final RecentTasks recentTasks = mService.mAtmService.getRecentTasks(); - final String recentsPackageName = - (recentTasks != null) ? recentTasks.getRecentsComponent().getPackageName() : null; - return mNextAppTransitionType == NEXT_TRANSIT_TYPE_CUSTOM - && mNextAppTransitionPackage.equals(recentsPackageName); - } - /** * @return true if and only if we are currently fetching app transition specs from the future * passed into {@link #overridePendingAppTransitionMultiThumbFuture} diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index f1b322ed24ba0..a2b295a609cd2 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -515,9 +515,14 @@ public class RecentsAnimationController implements DeathRecipient { void addTaskToTargets(Task task, OnAnimationFinishedCallback finishedCallback) { if (mRunner != null) { + // No need to send task appeared when the task target already exists. + if (isAnimatingTask(task)) { + return; + } final RemoteAnimationTarget target = createTaskRemoteAnimation(task, finishedCallback); - if (target == null) return; - + if (target == null) { + return; + } ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "addTaskToTargets, target: %s", target); try { mRunner.onTaskAppeared(target); diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 3facfd4837c80..f8ad6f248728f 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3511,14 +3511,15 @@ class Task extends WindowContainer { int transit, boolean isVoiceInteraction, @Nullable OnAnimationFinishedCallback finishedCallback) { final RecentsAnimationController control = mWmService.getRecentsAnimationController(); - if (control != null && enter - && getDisplayContent().mAppTransition.isNextAppTransitionCustomFromRecents()) { - ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, - "addTaskToRecentsAnimationIfNeeded, control: %s, task: %s, transit: %s", - control, asTask(), AppTransition.appTransitionToString(transit)); + if (control != null) { // We let the transition to be controlled by RecentsAnimation, and callback task's // RemoteAnimationTarget for remote runner to animate. - control.addTaskToTargets(getRootTask(), finishedCallback); + if (enter) { + ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, + "applyAnimationUnchecked, control: %s, task: %s, transit: %s", + control, asTask(), AppTransition.appTransitionToString(transit)); + control.addTaskToTargets(getRootTask(), finishedCallback); + } } else { super.applyAnimationUnchecked(lp, enter, transit, isVoiceInteraction, finishedCallback); }