Do not wait for transient hide transition targets

This avoids the latency to start transient transition when
the activities in the hiding tasks are slow to report drawn.

Fix: 275031340
Test: atest TransitionTests#testTransientLaunch
Change-Id: Iaaf2221150d956f509d6f9365e29da12f3243e5e
This commit is contained in:
Riddle Hsu
2023-03-24 18:10:42 +08:00
parent 0674cd7e10
commit 0fbc5aa62a
2 changed files with 7 additions and 0 deletions

View File

@@ -10421,6 +10421,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
@Override
boolean isSyncFinished() {
if (task != null && mTransitionController.isTransientHide(task)) {
// The activity keeps visibleRequested but may be hidden later, so no need to wait for
// it to be drawn.
return true;
}
if (!super.isSyncFinished()) return false;
if (mDisplayContent != null && mDisplayContent.mUnknownAppVisibilityController
.isVisibilityUnknown(this)) {

View File

@@ -1415,6 +1415,8 @@ public class TransitionTests extends WindowTestsBase {
final Transition.ChangeInfo activity1ChangeInfo = closeTransition.mChanges.get(activity1);
assertNotNull(activity1ChangeInfo);
assertTrue(activity1ChangeInfo.hasChanged());
// No need to wait for the activity in transient hide task.
assertTrue(activity1.isSyncFinished());
activity1.setVisibleRequested(false);
activity2.setVisibleRequested(true);