Merge "Fix app transition delayed cases" into qt-dev
am: 0a71ae9536
Change-Id: I76424828d721d2f83aac3a9bb86c4251189faae2
This commit is contained in:
@@ -4089,11 +4089,14 @@ class ActivityStack extends ConfigurationContainer {
|
|||||||
// The activity that we are finishing may be over the lock screen. In this case, we do not
|
// The activity that we are finishing may be over the lock screen. In this case, we do not
|
||||||
// want to consider activities that cannot be shown on the lock screen as running and should
|
// want to consider activities that cannot be shown on the lock screen as running and should
|
||||||
// proceed with finishing the activity if there is no valid next top running activity.
|
// proceed with finishing the activity if there is no valid next top running activity.
|
||||||
|
// Note that if this finishing activity is floating task, we don't need to wait the
|
||||||
|
// next activity resume and can destroy it directly.
|
||||||
final ActivityDisplay display = getDisplay();
|
final ActivityDisplay display = getDisplay();
|
||||||
final ActivityRecord next = display.topRunningActivity(true /* considerKeyguardState */);
|
final ActivityRecord next = display.topRunningActivity(true /* considerKeyguardState */);
|
||||||
|
final boolean isFloating = r.getConfiguration().windowConfiguration.tasksAreFloating();
|
||||||
|
|
||||||
if (mode == FINISH_AFTER_VISIBLE && (r.visible || r.nowVisible)
|
if (mode == FINISH_AFTER_VISIBLE && (r.visible || r.nowVisible)
|
||||||
&& next != null && !next.nowVisible) {
|
&& next != null && !next.nowVisible && !isFloating) {
|
||||||
if (!mStackSupervisor.mStoppingActivities.contains(r)) {
|
if (!mStackSupervisor.mStoppingActivities.contains(r)) {
|
||||||
addToStopping(r, false /* scheduleIdle */, false /* idleDelayed */);
|
addToStopping(r, false /* scheduleIdle */, false /* idleDelayed */);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2861,6 +2861,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
|||||||
}
|
}
|
||||||
mDestroying = false;
|
mDestroying = false;
|
||||||
destroyedSomething = true;
|
destroyedSomething = true;
|
||||||
|
|
||||||
|
// Since mDestroying will affect AppWindowToken#allDrawn, we need to perform another
|
||||||
|
// traversal in case we are waiting on this window to start the transition.
|
||||||
|
if (getDisplayContent().mAppTransition.isTransitionSet()
|
||||||
|
&& getDisplayContent().mOpeningApps.contains(mAppToken)) {
|
||||||
|
mWmService.mWindowPlacerLocked.requestTraversal();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return destroyedSomething;
|
return destroyedSomething;
|
||||||
|
|||||||
Reference in New Issue
Block a user