summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index a3a06d404a2e..f9c2c7ef8066 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -1689,7 +1689,16 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
// Prevent recursion.
return;
}
- task.mTransitionController.requestCloseTransitionIfNeeded(task);
+ final Transition transit = task.mTransitionController.requestCloseTransitionIfNeeded(task);
+ if (transit != null && !task.mTransitionController.useFullReadyTracking()) {
+ // If a transition was created here, it means this is an isolated removeTask. It's
+ // possible for there to be no consequent operations (eg. this is a multiwindow task
+ // closing so nothing becomes visible in response) so we must "touch" the old ready
+ // tracker so that it doesn't get stuck. However, since the old ready tracker
+ // doesn't support multiple conditions, we have to touch it here at the beginning
+ // before anything that may need it to wait (setReady(false)).
+ transit.setReady(task, true);
+ }
// Consume the stopping activities immediately so activity manager won't skip killing
// the process because it is still foreground state, i.e. RESUMED -> PAUSING set from
// removeActivities -> finishIfPossible.