From bce0a3a4160549bb4f252ca9e65149c335e690c6 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Wed, 1 Jul 2020 11:19:27 -0700 Subject: [PATCH] Check PendingStartActivityUids in getAppStartModeLocked. While starting activity, WindowManager posts a runnable to DisplayThread to updateOomAdj. The UidRecord update could be delayed. In getAppStartModeLocked(), before checking UidRecord, check PendingStartActivityUids to determine if the uid is in foreground state. Bug: 160213874 Test: Reproduce steps in b/160213874, launch GCA and take a photo immediately. Change-Id: Ieb984d2f629d607abfbda89ca00f8785cf5923fd --- .../java/com/android/server/am/ActivityManagerService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 157feb30c24d7..cb08875e1b161 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -6341,6 +6341,9 @@ public class ActivityManagerService extends IActivityManager.Stub int getAppStartModeLocked(int uid, String packageName, int packageTargetSdk, int callingPid, boolean alwaysRestrict, boolean disabledOnly, boolean forcedStandby) { + if (mInternal.isPendingTopUid(uid)) { + return ActivityManager.APP_START_MODE_NORMAL; + } UidRecord uidRec = mProcessList.getUidRecordLocked(uid); if (DEBUG_BACKGROUND_CHECK) Slog.d(TAG, "checkAllowBackground: uid=" + uid + " pkg=" + packageName + " rec=" + uidRec + " always=" + alwaysRestrict + " idle="