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
This commit is contained in:
Ng Zhi An
2017-10-06 17:17:11 -07:00
parent 0e4fcfe95d
commit 90024acefe

View File

@@ -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();
}