diff options
| -rw-r--r-- | services/core/java/com/android/server/BatteryService.java | 14 | ||||
| -rw-r--r-- | services/core/java/com/android/server/flags/services.aconfig | 11 |
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 + } +} |