diff options
| author | 2018-04-16 21:43:33 -0700 | |
|---|---|---|
| committer | 2018-04-18 09:47:51 -0700 | |
| commit | e010b418ec1defadff855feece5d99aba6193ca5 (patch) | |
| tree | e263a10b7ec26cabfe45e6f296b179b326a35406 | |
| parent | 4ea0a5a2df28c3acdd72332907be2d4f38fcd061 (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.java | 10 |
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) { |