From e010b418ec1defadff855feece5d99aba6193ca5 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Mon, 16 Apr 2018 21:43:33 -0700 Subject: [PATCH] ActivityManagerService: make bluetooth actually persistent com.android.bluetooth was being marked as a persistent service in terms of OOM adjustment, but it was only being marked as important foreground for scheduling reasons. Make sure that persistent services are correctly marked as persistent for the purposes of scheduling too. bug 78197570 Test: dumpsys activity Change-Id: Ieb2fe4253cac1202bd94a42356bb32f9e77b5637 --- .../java/com/android/server/am/ActivityManagerService.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 9d2cfe314f75..3d620f20bc06 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -23515,8 +23515,14 @@ public class ActivityManagerService extends IActivityManager.Stub int newAdj; if ((cr.flags&(Context.BIND_ABOVE_CLIENT |Context.BIND_IMPORTANT)) != 0) { - newAdj = clientAdj >= ProcessList.PERSISTENT_SERVICE_ADJ - ? clientAdj : ProcessList.PERSISTENT_SERVICE_ADJ; + if (clientAdj >= ProcessList.PERSISTENT_SERVICE_ADJ) { + newAdj = clientAdj; + } else { + // make this service persistent + newAdj = ProcessList.PERSISTENT_SERVICE_ADJ; + schedGroup = ProcessList.SCHED_GROUP_DEFAULT; + procState = ActivityManager.PROCESS_STATE_PERSISTENT; + } } else if ((cr.flags&Context.BIND_NOT_VISIBLE) != 0 && clientAdj < ProcessList.PERCEPTIBLE_APP_ADJ && adj > ProcessList.PERCEPTIBLE_APP_ADJ) { -- 2.11.0