summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tim Murray <timmurray@google.com> 2018-04-16 21:43:33 -0700
committer Tim Murray <timmurray@google.com> 2018-04-18 09:47:51 -0700
commite010b418ec1defadff855feece5d99aba6193ca5 (patch)
treee263a10b7ec26cabfe45e6f296b179b326a35406
parent4ea0a5a2df28c3acdd72332907be2d4f38fcd061 (diff)
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
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java10
1 files 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) {