summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/BatteryService.java14
-rw-r--r--services/core/java/com/android/server/flags/services.aconfig11
2 files changed, 21 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index 797993647be7..1ccc48d44f99 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -777,18 +777,24 @@ public final class BatteryService extends SystemService {
+ ", info:" + mHealthInfo.toString());
}
- mHandler.post(() -> broadcastBatteryChangedIntent(intent, mBatteryChangedOptions));
+ mHandler.post(() -> broadcastBatteryChangedIntent(mContext,
+ intent, mBatteryChangedOptions));
}
- private static void broadcastBatteryChangedIntent(Intent intent, Bundle options) {
+ private static void broadcastBatteryChangedIntent(Context context, Intent intent,
+ Bundle options) {
// TODO (293959093): It is important that SystemUI receives this broadcast as soon as
// possible. Ideally, it should be using binder callbacks but until then, dispatch this
// as a foreground broadcast to SystemUI.
final Intent fgIntent = new Intent(intent);
fgIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
fgIntent.setPackage(sSystemUiPackage);
- ActivityManager.broadcastStickyIntent(fgIntent, AppOpsManager.OP_NONE,
- options, UserHandle.USER_ALL);
+ if (com.android.server.flags.Flags.pkgTargetedBatteryChangedNotSticky()) {
+ context.sendBroadcastAsUser(fgIntent, UserHandle.ALL, null, options);
+ } else {
+ ActivityManager.broadcastStickyIntent(fgIntent, AppOpsManager.OP_NONE,
+ options, UserHandle.USER_ALL);
+ }
ActivityManager.broadcastStickyIntent(intent, new String[] {sSystemUiPackage},
AppOpsManager.OP_NONE, options, UserHandle.USER_ALL);
diff --git a/services/core/java/com/android/server/flags/services.aconfig b/services/core/java/com/android/server/flags/services.aconfig
index e43d0866e1bd..9bbcb0c99e8e 100644
--- a/services/core/java/com/android/server/flags/services.aconfig
+++ b/services/core/java/com/android/server/flags/services.aconfig
@@ -17,3 +17,14 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ namespace: "backstage_power"
+ name: "pkg_targeted_battery_changed_not_sticky"
+ description: "Avoid sending the package targeted BATTERY_CHANGED broadcast as sticky"
+ bug: "336832816"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}