From 2af9efb27589bb1a233a5db1d4da303fd09c32e8 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Mon, 5 Jun 2023 10:04:10 +0000 Subject: [PATCH] Avoid unexpected turning screen on when top activity finishes The ActivityRecord#mCurrentLaunchCanTurnScreenOn is true while the Activity was started and created. However, another activity may immediately started afterward. Once the top activity finishes while the display is off, the display was unexpected turn on since the next top activity is able to turn screen on. Reset the can-turn-screen-on state of the last started activity when starting a new activity. Bug: 270827073 Bug: 241961202 Test: verified on sample app Change-Id: I2c2d15e1a1a68d583d42dde69aef2f596cd064b5 --- .../core/java/com/android/server/wm/ActivityStarter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 53a4752ba8a1e..7455720f24095 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -898,6 +898,11 @@ class ActivityStarter { } mLastStartReason = request.reason; mLastStartActivityTimeMs = System.currentTimeMillis(); + // Reset the ActivityRecord#mCurrentLaunchCanTurnScreenOn state of last start activity in + // case the state is not yet consumed during rapid activity launch. + if (mLastStartActivityRecord != null) { + mLastStartActivityRecord.setCurrentLaunchCanTurnScreenOn(false); + } mLastStartActivityRecord = null; final IApplicationThread caller = request.caller;