From fbc0b2c92dde34099d0a4ac6ef7c87b86acad8a3 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Thu, 23 Mar 2023 00:19:36 +0000 Subject: [PATCH] Check for current procState before demoting it. Otherwise, when adj value is set to CACHED_APP_MIN_ADJ(900), AppFreezer will freeze the process. Bug: 273519603 Test: presubmit and b/273519603. Change-Id: Ia554aabd07ce9635b77319e62429e3e50659a970 --- services/core/java/com/android/server/am/OomAdjuster.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index a944f6fe8b7ef..7a92434a4ba4e 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -2048,8 +2048,9 @@ public class OomAdjuster { // around switching between two apps. However, we don't want to keep the // process in this privileged state indefinitely. Eventually, allow the // app to be demoted to cached. - if ((state.getSetProcState() == PROCESS_STATE_LAST_ACTIVITY - && (state.getLastStateTime() + mConstants.MAX_PREVIOUS_TIME) < now)) { + if (procState >= PROCESS_STATE_LAST_ACTIVITY + && state.getSetProcState() == PROCESS_STATE_LAST_ACTIVITY + && (state.getLastStateTime() + mConstants.MAX_PREVIOUS_TIME) < now) { procState = PROCESS_STATE_LAST_ACTIVITY; schedGroup = SCHED_GROUP_BACKGROUND; state.setAdjType("previous-expired");