diff options
| author | Dianne Hackborn <hackbod@google.com> | 2014-10-11 00:17:45 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-10-11 00:17:46 +0000 |
| commit | bbbeafa9bf0c4598b32c615c72e2c87ef62c85e9 (patch) | |
| tree | c3cf10ec36ac8f7a334dcf4707f8b823eb834156 | |
| parent | c6c18618e999f24675e23b67e6c488d700199579 (diff) | |
| parent | ce09f5a53c8408d995c116a4430c000574d9875a (diff) | |
| download | frameworks_base-bbbeafa9bf0c4598b32c615c72e2c87ef62c85e9.zip frameworks_base-bbbeafa9bf0c4598b32c615c72e2c87ef62c85e9.tar.gz frameworks_base-bbbeafa9bf0c4598b32c615c72e2c87ef62c85e9.tar.bz2 | |
Merge "Fix issue #17829949: Don't kill Bluetooth service..." into lmp-dev
3 files changed, 19 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index 7b64139..636228b 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -663,7 +663,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mHandler.sendMessageDelayed(timeoutMsg,TIMEOUT_BIND_MS); Intent i = new Intent(IBluetooth.class.getName()); if (!doBind(i, mConnection, - Context.BIND_AUTO_CREATE, UserHandle.CURRENT)) { + Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT, + UserHandle.CURRENT)) { mHandler.removeMessages(MESSAGE_TIMEOUT_BIND); } else { mBinding = true; @@ -1050,7 +1051,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mHandler.sendMessageDelayed(timeoutMsg,TIMEOUT_BIND_MS); mConnection.setGetNameAddressOnly(false); Intent i = new Intent(IBluetooth.class.getName()); - if (!doBind(i, mConnection,Context.BIND_AUTO_CREATE, UserHandle.CURRENT)) { + if (!doBind(i, mConnection,Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT, + UserHandle.CURRENT)) { mHandler.removeMessages(MESSAGE_TIMEOUT_BIND); } else { mBinding = true; @@ -1153,7 +1155,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_BLUETOOTH_LE)) { Intent i = new Intent(IBluetoothGatt.class.getName()); - doBind(i, mConnection, Context.BIND_AUTO_CREATE, UserHandle.CURRENT); + doBind(i, mConnection, Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT, + UserHandle.CURRENT); } } else { //If Bluetooth is off, send service down event to proxy objects, and unbind diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 0c8e26e..8357366 100755 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -13083,6 +13083,7 @@ public final class ActivityManagerService extends ActivityManagerNative pw.println(" OOM levels:"); printOomLevel(pw, "SYSTEM_ADJ", ProcessList.SYSTEM_ADJ); printOomLevel(pw, "PERSISTENT_PROC_ADJ", ProcessList.PERSISTENT_PROC_ADJ); + printOomLevel(pw, "PERSISTENT_SERVICE_ADJ", ProcessList.PERSISTENT_SERVICE_ADJ); printOomLevel(pw, "FOREGROUND_APP_ADJ", ProcessList.FOREGROUND_APP_ADJ); printOomLevel(pw, "VISIBLE_APP_ADJ", ProcessList.VISIBLE_APP_ADJ); printOomLevel(pw, "PERCEPTIBLE_APP_ADJ", ProcessList.PERCEPTIBLE_APP_ADJ); @@ -13883,7 +13884,8 @@ public final class ActivityManagerService extends ActivityManagerNative static final int[] DUMP_MEM_OOM_ADJ = new int[] { ProcessList.NATIVE_ADJ, - ProcessList.SYSTEM_ADJ, ProcessList.PERSISTENT_PROC_ADJ, ProcessList.FOREGROUND_APP_ADJ, + ProcessList.SYSTEM_ADJ, ProcessList.PERSISTENT_PROC_ADJ, + ProcessList.PERSISTENT_SERVICE_ADJ, ProcessList.FOREGROUND_APP_ADJ, ProcessList.VISIBLE_APP_ADJ, ProcessList.PERCEPTIBLE_APP_ADJ, ProcessList.BACKUP_APP_ADJ, ProcessList.HEAVY_WEIGHT_APP_ADJ, ProcessList.SERVICE_ADJ, ProcessList.HOME_APP_ADJ, @@ -13891,7 +13893,7 @@ public final class ActivityManagerService extends ActivityManagerNative }; static final String[] DUMP_MEM_OOM_LABEL = new String[] { "Native", - "System", "Persistent", "Foreground", + "System", "Persistent", "Persistent Service", "Foreground", "Visible", "Perceptible", "Heavy Weight", "Backup", "A Services", "Home", @@ -13899,7 +13901,7 @@ public final class ActivityManagerService extends ActivityManagerNative }; static final String[] DUMP_MEM_OOM_COMPACT_LABEL = new String[] { "native", - "sys", "pers", "fore", + "sys", "pers", "persvc", "fore", "vis", "percept", "heavy", "backup", "servicea", "home", @@ -16811,7 +16813,8 @@ public final class ActivityManagerService extends ActivityManagerNative } else { if ((cr.flags&(Context.BIND_ABOVE_CLIENT |Context.BIND_IMPORTANT)) != 0) { - adj = clientAdj; + adj = clientAdj >= ProcessList.PERSISTENT_SERVICE_ADJ + ? clientAdj : ProcessList.PERSISTENT_SERVICE_ADJ; } else if ((cr.flags&Context.BIND_NOT_VISIBLE) != 0 && clientAdj < ProcessList.PERCEPTIBLE_APP_ADJ && adj > ProcessList.PERCEPTIBLE_APP_ADJ) { diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 0ea66b9..5b22255 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -97,6 +97,10 @@ final class ProcessList { // rather not kill it! static final int FOREGROUND_APP_ADJ = 0; + // This is a process that the system or a persistent process has bound to, + // and indicated it is important. + static final int PERSISTENT_SERVICE_ADJ = -11; + // This is a system persistent process, such as telephony. Definitely // don't want to kill it, but doing so is not completely fatal. static final int PERSISTENT_PROC_ADJ = -12; @@ -336,6 +340,8 @@ final class ProcessList { return buildOomTag("vis ", null, setAdj, ProcessList.VISIBLE_APP_ADJ); } else if (setAdj >= ProcessList.FOREGROUND_APP_ADJ) { return buildOomTag("fore ", null, setAdj, ProcessList.FOREGROUND_APP_ADJ); + } else if (setAdj >= ProcessList.PERSISTENT_SERVICE_ADJ) { + return buildOomTag("psvc ", null, setAdj, ProcessList.PERSISTENT_SERVICE_ADJ); } else if (setAdj >= ProcessList.PERSISTENT_PROC_ADJ) { return buildOomTag("pers ", null, setAdj, ProcessList.PERSISTENT_PROC_ADJ); } else if (setAdj >= ProcessList.SYSTEM_ADJ) { |
