From 90024acefeed782ff89a6004802715529d5a189d Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Fri, 6 Oct 2017 17:17:11 -0700 Subject: [PATCH] Only show dialog if top app is killed This changes the check from only looking at the app's curSchedGroup to checking if the app that is killed matches the current top app (retrieved using resumedAppLocked) Bug: 67513077 Bug: 67416130 Test: manual Change-Id: Idda4c4b21081737ee3ab2101a8cf2a94f0d8df23 --- .../android/server/am/ActivityManagerService.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index b4741d12bc150..a95b7f3799c25 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5459,7 +5459,7 @@ public class ActivityManagerService extends IActivityManager.Stub boolean doLowMem = app.instr == null; boolean doOomAdj = doLowMem; if (!app.killedByAm) { - maybeNotifyTopAppKilled(app); + maybeNotifyTopAppKilledLocked(app); Slog.i(TAG, "Process " + app.processName + " (pid " + pid + ") has died: " + ProcessList.makeOomAdjString(app.setAdj) + ProcessList.makeProcStateString(app.setProcState)); @@ -5494,8 +5494,8 @@ public class ActivityManagerService extends IActivityManager.Stub } /** Show system error dialog when a top app is killed by LMK */ - void maybeNotifyTopAppKilled(ProcessRecord app) { - if (!shouldNotifyTopAppKilled(app)) { + void maybeNotifyTopAppKilledLocked(ProcessRecord app) { + if (!shouldNotifyTopAppKilledLocked(app)) { return; } @@ -5505,8 +5505,10 @@ public class ActivityManagerService extends IActivityManager.Stub } /** Only show notification when the top app is killed on low ram devices */ - private boolean shouldNotifyTopAppKilled(ProcessRecord app) { - return app.curSchedGroup == ProcessList.SCHED_GROUP_TOP_APP && + private boolean shouldNotifyTopAppKilledLocked(ProcessRecord app) { + final ActivityRecord TOP_ACT = resumedAppLocked(); + final ProcessRecord TOP_APP = TOP_ACT != null ? TOP_ACT.app : null; + return app == TOP_APP && ActivityManager.isLowRamDeviceStatic(); }