summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Michael Wachenschwanz <mwachens@google.com> 2025-01-22 10:17:11 -0800
committer Michael Wachenschwanz <mwachens@google.com> 2025-02-12 09:56:10 -0800
commit221b19e9c0ee2763b3594e09fb175df0fc7ae128 (patch)
treece3e0586e801ee1f9be91a7379bfc0860d1c700b
parent6c118a5bdf32c987a2264f0952a74536ff422d6e (diff)
Lower SMS background importance
The messaging app is currently bound with the BIND_NOT_VISIBLE flag by the system. This keeps it in the oom score 200 slot, which competes with higher priority processes like foreground services. Binding with BIND_ALMOST_PERCEPTIBLE will lower its background importance to 201, keeping it warm in memory for snappier UX but allows them to die in favor of process doing more important work. Flag: com.android.server.am.lower_sms_oom_importance Fixes: 372511805 Test: manual (`adb shell dumpsys activity lru`, background sms process should have `prcp+1` oom score.) Change-Id: Ia4fef6afa57ff822e5122e1716ea05462dd1ed48
-rw-r--r--services/core/java/com/android/server/am/flags.aconfig11
-rw-r--r--services/core/java/com/android/server/appbinding/AppBindingConstants.java13
2 files changed, 21 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/flags.aconfig b/services/core/java/com/android/server/am/flags.aconfig
index e89889e794ba..15beeda591d8 100644
--- a/services/core/java/com/android/server/am/flags.aconfig
+++ b/services/core/java/com/android/server/am/flags.aconfig
@@ -319,3 +319,14 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "lower_sms_oom_importance"
+ namespace: "backstage_power"
+ description: "Lower messaging app process oom importance to PERCEPTIBLE_APP_ADJ + 1."
+ bug: "372511805"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/services/core/java/com/android/server/appbinding/AppBindingConstants.java b/services/core/java/com/android/server/appbinding/AppBindingConstants.java
index 71847694b1d8..561cc0ef0a3b 100644
--- a/services/core/java/com/android/server/appbinding/AppBindingConstants.java
+++ b/services/core/java/com/android/server/appbinding/AppBindingConstants.java
@@ -102,9 +102,16 @@ public class AppBindingConstants {
boolean smsServiceEnabled = parser.getBoolean(SMS_SERVICE_ENABLED_KEY, true);
- int smsAppBindFlags = parser.getInt(
- SMS_APP_BIND_FLAGS_KEY,
- Context.BIND_NOT_VISIBLE | Context.BIND_FOREGROUND_SERVICE);
+ int smsAppBindFlags;
+ if (com.android.server.am.Flags.lowerSmsOomImportance()) {
+ smsAppBindFlags = parser.getInt(
+ SMS_APP_BIND_FLAGS_KEY,
+ Context.BIND_ALMOST_PERCEPTIBLE | Context.BIND_FOREGROUND_SERVICE);
+ } else {
+ smsAppBindFlags = parser.getInt(
+ SMS_APP_BIND_FLAGS_KEY,
+ Context.BIND_NOT_VISIBLE | Context.BIND_FOREGROUND_SERVICE);
+ }
long serviceStableConnectionThresholdSec = parser.getLong(
SERVICE_STABLE_CONNECTION_THRESHOLD_SEC_KEY, TimeUnit.MINUTES.toSeconds(2));