summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java12
-rw-r--r--services/core/java/com/android/server/wm/Transition.java13
2 files changed, 11 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index a9192c4c6139..d7a696f47b7e 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1365,18 +1365,6 @@ class ActivityStarter {
request.outActivity[0] = mLastStartActivityRecord;
}
- // Reset the ActivityRecord#mCurrentLaunchCanTurnScreenOn state of activity started
- // before this one if it is no longer the top-most focusable activity.
- // Doing so in case the state is not yet consumed during rapid activity launch.
- if (previousStart != null && !previousStart.finishing && previousStart.isAttached()
- && previousStart.currentLaunchCanTurnScreenOn()) {
- final ActivityRecord topFocusable = previousStart.getDisplayContent().getActivity(
- ar -> ar.isFocusable() && !ar.finishing);
- if (previousStart != topFocusable) {
- previousStart.setCurrentLaunchCanTurnScreenOn(false);
- }
- }
-
return mLastStartActivityResult;
}
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 86c6f8db8899..ed4ac35e7332 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -1374,13 +1374,22 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
// processed all the participants first (in particular, we want to trigger pip-enter first)
for (int i = 0; i < mParticipants.size(); ++i) {
final ActivityRecord ar = mParticipants.valueAt(i).asActivityRecord();
+ if (ar == null) continue;
+
// If the activity was just inserted to an invisible task, it will keep INITIALIZING
// state. Then no need to notify the callback to avoid clearing some states
// unexpectedly, e.g. launch-task-behind.
- if (ar != null && (ar.isVisibleRequested()
- || !ar.isState(ActivityRecord.State.INITIALIZING))) {
+ if (ar.isVisibleRequested() || !ar.isState(ActivityRecord.State.INITIALIZING)) {
mController.dispatchLegacyAppTransitionFinished(ar);
}
+
+ // Reset the ActivityRecord#mCurrentLaunchCanTurnScreenOn state if it is not the top
+ // running activity. Doing so in case the state is not yet consumed during rapid
+ // activity launch.
+ if (ar.currentLaunchCanTurnScreenOn() && ar.getDisplayContent() != null
+ && ar.getDisplayContent().topRunningActivity() != ar) {
+ ar.setCurrentLaunchCanTurnScreenOn(false);
+ }
}
// Update the input-sink (touch-blocking) state now that the animation is finished.