Loading core/res/res/values/config.xml +8 −0 Original line number Diff line number Diff line Loading @@ -5754,6 +5754,14 @@ --> <integer name="config_bg_current_drain_location_min_duration">1800</integer> <!-- The behavior when the system detects it has abusive current drains, whether or not to move the app to the restricted standby bucket level. True - we'll move the app to restricted standby bucket as long as its bg battery usage goes beyond the threshold, False - we'll not move it. Note: This should be only enabled on devices with high confidence on power measurement. --> <bool name="config_bg_current_drain_auto_restrict_abusive_apps">false</bool> <!-- The behavior for an app with a FGS and its notification is still showing, when the system detects it's abusive and should be put into bg restricted level. True - we'll show the prompt to user, False - we'll not show it. Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -4774,6 +4774,7 @@ <java-symbol type="array" name="config_bg_current_drain_high_threshold_to_bg_restricted" /> <java-symbol type="integer" name="config_bg_current_drain_media_playback_min_duration" /> <java-symbol type="integer" name="config_bg_current_drain_location_min_duration" /> <java-symbol type="bool" name="config_bg_current_drain_auto_restrict_abusive_apps" /> <java-symbol type="bool" name="config_bg_prompt_fgs_with_noti_to_bg_restricted" /> <java-symbol type="bool" name="config_bg_prompt_abusive_apps_to_bg_restricted" /> <java-symbol type="integer" name="config_bg_current_drain_exempted_types" /> Loading services/core/java/com/android/server/am/AppBatteryTracker.java +43 −3 Original line number Diff line number Diff line Loading @@ -1257,6 +1257,16 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> DEVICE_CONFIG_SUBNAMESPACE_PREFIX + "current_drain_event_duration_based_threshold_enabled"; /** * Whether or not we should move the app into the restricted bucket level if its background * battery usage goes beyond the threshold. Note this different from the flag * {@link AppRestrictionController.ConstantsObserver#KEY_BG_AUTO_RESTRICT_ABUSIVE_APPS} * which is to control the overall auto bg restrictions. */ static final String KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED = DEVICE_CONFIG_SUBNAMESPACE_PREFIX + "current_drain_auto_restrict_abusive_apps_enabled"; /** * The types of battery drain we're checking on each app; if the sum of the battery drain * exceeds the threshold, it'll be moved to restricted standby bucket; the type here Loading Loading @@ -1352,6 +1362,11 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> */ final boolean mDefaultBgCurrentDrainEventDurationBasedThresholdEnabled; /** * Default value to {@link #mBgCurrentDrainAutoRestrictAbusiveAppsEnabled}. */ final boolean mDefaultBgCurrentDrainAutoRestrictAbusiveAppsEnabled; /** * Default value to {@link #mBgCurrentDrainRestrictedBucketTypes}. */ Loading Loading @@ -1429,6 +1444,11 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> */ volatile boolean mBgCurrentDrainEventDurationBasedThresholdEnabled; /** * @see #KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED. */ volatile boolean mBgCurrentDrainAutoRestrictAbusiveAppsEnabled; /** * @see #KEY_BG_CURRENT_DRAIN_TYPES_TO_RESTRICTED_BUCKET. */ Loading Loading @@ -1520,6 +1540,8 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> R.integer.config_bg_current_drain_location_min_duration) * 1_000; mDefaultBgCurrentDrainEventDurationBasedThresholdEnabled = resources.getBoolean( R.bool.config_bg_current_drain_event_duration_based_threshold_enabled); mDefaultBgCurrentDrainAutoRestrictAbusiveAppsEnabled = resources.getBoolean( R.bool.config_bg_current_drain_auto_restrict_abusive_apps); mDefaultCurrentDrainTypesToRestrictedBucket = resources.getInteger( R.integer.config_bg_current_drain_types_to_restricted_bucket); mDefaultBgCurrentDrainTypesToBgRestricted = resources.getInteger( Loading Loading @@ -1569,6 +1591,9 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> case KEY_BG_CURRENT_DRAIN_POWER_COMPONENTS: updateCurrentDrainThreshold(); break; case KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED: updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled(); break; case KEY_BG_CURRENT_DRAIN_WINDOW: updateCurrentDrainWindow(); break; Loading Loading @@ -1701,6 +1726,13 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> DEFAULT_BG_CURRENT_DRAIN_DECOUPLE_THRESHOLD); } private void updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled() { mBgCurrentDrainAutoRestrictAbusiveAppsEnabled = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED, mDefaultBgCurrentDrainAutoRestrictAbusiveAppsEnabled); } @Override public void onSystemReady() { mBatteryFullChargeMah = Loading @@ -1714,6 +1746,7 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> updateCurrentDrainEventDurationBasedThresholdEnabled(); updateCurrentDrainExemptedTypes(); updateCurrentDrainDecoupleThresholds(); updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled(); } @Override Loading @@ -1728,9 +1761,12 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> if (pair != null) { final long lastInteractionTime = mLastInteractionTime.get(uid, 0L); final long[] ts = pair.first; final int restrictedLevel = ts[TIME_STAMP_INDEX_RESTRICTED_BUCKET] > (lastInteractionTime + mBgCurrentDrainInteractionGracePeriodMs) && mTracker.mAppRestrictionController.isAutoRestrictAbusiveAppEnabled() final boolean noInteractionRecently = ts[TIME_STAMP_INDEX_RESTRICTED_BUCKET] > (lastInteractionTime + mBgCurrentDrainInteractionGracePeriodMs); final boolean canRestrict = mTracker.mAppRestrictionController.isAutoRestrictAbusiveAppEnabled() && mBgCurrentDrainAutoRestrictAbusiveAppsEnabled; final int restrictedLevel = noInteractionRecently && canRestrict ? RESTRICTION_LEVEL_RESTRICTED_BUCKET : RESTRICTION_LEVEL_ADAPTIVE_BUCKET; if (maxLevel > RESTRICTION_LEVEL_BACKGROUND_RESTRICTED) { Loading Loading @@ -2066,6 +2102,10 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> pw.print('='); pw.println(mBgCurrentDrainEventDurationBasedThresholdEnabled); pw.print(prefix); pw.print(KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED); pw.print('='); pw.println(mBgCurrentDrainAutoRestrictAbusiveAppsEnabled); pw.print(prefix); pw.print(KEY_BG_CURRENT_DRAIN_TYPES_TO_RESTRICTED_BUCKET); pw.print('='); pw.println(batteryUsageTypesToString(mBgCurrentDrainRestrictedBucketTypes)); Loading services/tests/mockingservicestests/src/com/android/server/am/BackgroundRestrictionTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -585,6 +585,7 @@ public final class BackgroundRestrictionTest { DeviceConfigSession<Long> bgCurrentDrainInteractionGracePeriod = null; DeviceConfigSession<Float> bgCurrentDrainRestrictedBucketThreshold = null; DeviceConfigSession<Float> bgCurrentDrainBgRestrictedThreshold = null; DeviceConfigSession<Boolean> bgCurrentDrainAutoRestrictAbusiveApps = null; DeviceConfigSession<Boolean> bgPromptFgsWithNotiToBgRestricted = null; DeviceConfigSession<Boolean> bgPromptAbusiveAppToBgRestricted = null; DeviceConfigSession<Long> bgNotificationMinInterval = null; Loading Loading @@ -644,6 +645,14 @@ public final class BackgroundRestrictionTest { isLowRamDeviceStatic() ? 1 : 0]); bgCurrentDrainBgRestrictedThreshold.set(bgRestrictedThreshold); bgCurrentDrainAutoRestrictAbusiveApps = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, AppBatteryPolicy.KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED, DeviceConfig::getBoolean, mContext.getResources().getBoolean( R.bool.config_bg_current_drain_auto_restrict_abusive_apps)); bgCurrentDrainAutoRestrictAbusiveApps.set(true); bgPromptFgsWithNotiToBgRestricted = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, ConstantsObserver.KEY_BG_PROMPT_FGS_WITH_NOTIFICATION_TO_BG_RESTRICTED, Loading Loading @@ -1099,6 +1108,7 @@ public final class BackgroundRestrictionTest { closeIfNotNull(bgCurrentDrainInteractionGracePeriod); closeIfNotNull(bgCurrentDrainRestrictedBucketThreshold); closeIfNotNull(bgCurrentDrainBgRestrictedThreshold); closeIfNotNull(bgCurrentDrainAutoRestrictAbusiveApps); closeIfNotNull(bgPromptFgsWithNotiToBgRestricted); closeIfNotNull(bgPromptAbusiveAppToBgRestricted); closeIfNotNull(bgNotificationMinInterval); Loading Loading @@ -1651,6 +1661,7 @@ public final class BackgroundRestrictionTest { DeviceConfigSession<Float> bgCurrentDrainBgRestrictedThreshold = null; DeviceConfigSession<Float> bgCurrentDrainRestrictedBucketHighThreshold = null; DeviceConfigSession<Float> bgCurrentDrainBgRestrictedHighThreshold = null; DeviceConfigSession<Boolean> bgCurrentDrainAutoRestrictAbusiveApps = null; DeviceConfigSession<Long> bgMediaPlaybackMinDurationThreshold = null; DeviceConfigSession<Long> bgLocationMinDurationThreshold = null; DeviceConfigSession<Boolean> bgCurrentDrainEventDurationBasedThresholdEnabled = null; Loading Loading @@ -1736,6 +1747,14 @@ public final class BackgroundRestrictionTest { isLowRamDeviceStatic() ? 1 : 0]); bgCurrentDrainBgRestrictedHighThreshold.set(bgRestrictedHighThreshold); bgCurrentDrainAutoRestrictAbusiveApps = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, AppBatteryPolicy.KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED, DeviceConfig::getBoolean, mContext.getResources().getBoolean( R.bool.config_bg_current_drain_auto_restrict_abusive_apps)); bgCurrentDrainAutoRestrictAbusiveApps.set(true); bgMediaPlaybackMinDurationThreshold = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, AppBatteryPolicy.KEY_BG_CURRENT_DRAIN_MEDIA_PLAYBACK_MIN_DURATION, Loading Loading @@ -2226,6 +2245,7 @@ public final class BackgroundRestrictionTest { closeIfNotNull(bgCurrentDrainBgRestrictedThreshold); closeIfNotNull(bgCurrentDrainRestrictedBucketHighThreshold); closeIfNotNull(bgCurrentDrainBgRestrictedHighThreshold); closeIfNotNull(bgCurrentDrainAutoRestrictAbusiveApps); closeIfNotNull(bgMediaPlaybackMinDurationThreshold); closeIfNotNull(bgLocationMinDurationThreshold); closeIfNotNull(bgCurrentDrainEventDurationBasedThresholdEnabled); Loading Loading
core/res/res/values/config.xml +8 −0 Original line number Diff line number Diff line Loading @@ -5754,6 +5754,14 @@ --> <integer name="config_bg_current_drain_location_min_duration">1800</integer> <!-- The behavior when the system detects it has abusive current drains, whether or not to move the app to the restricted standby bucket level. True - we'll move the app to restricted standby bucket as long as its bg battery usage goes beyond the threshold, False - we'll not move it. Note: This should be only enabled on devices with high confidence on power measurement. --> <bool name="config_bg_current_drain_auto_restrict_abusive_apps">false</bool> <!-- The behavior for an app with a FGS and its notification is still showing, when the system detects it's abusive and should be put into bg restricted level. True - we'll show the prompt to user, False - we'll not show it. Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -4774,6 +4774,7 @@ <java-symbol type="array" name="config_bg_current_drain_high_threshold_to_bg_restricted" /> <java-symbol type="integer" name="config_bg_current_drain_media_playback_min_duration" /> <java-symbol type="integer" name="config_bg_current_drain_location_min_duration" /> <java-symbol type="bool" name="config_bg_current_drain_auto_restrict_abusive_apps" /> <java-symbol type="bool" name="config_bg_prompt_fgs_with_noti_to_bg_restricted" /> <java-symbol type="bool" name="config_bg_prompt_abusive_apps_to_bg_restricted" /> <java-symbol type="integer" name="config_bg_current_drain_exempted_types" /> Loading
services/core/java/com/android/server/am/AppBatteryTracker.java +43 −3 Original line number Diff line number Diff line Loading @@ -1257,6 +1257,16 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> DEVICE_CONFIG_SUBNAMESPACE_PREFIX + "current_drain_event_duration_based_threshold_enabled"; /** * Whether or not we should move the app into the restricted bucket level if its background * battery usage goes beyond the threshold. Note this different from the flag * {@link AppRestrictionController.ConstantsObserver#KEY_BG_AUTO_RESTRICT_ABUSIVE_APPS} * which is to control the overall auto bg restrictions. */ static final String KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED = DEVICE_CONFIG_SUBNAMESPACE_PREFIX + "current_drain_auto_restrict_abusive_apps_enabled"; /** * The types of battery drain we're checking on each app; if the sum of the battery drain * exceeds the threshold, it'll be moved to restricted standby bucket; the type here Loading Loading @@ -1352,6 +1362,11 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> */ final boolean mDefaultBgCurrentDrainEventDurationBasedThresholdEnabled; /** * Default value to {@link #mBgCurrentDrainAutoRestrictAbusiveAppsEnabled}. */ final boolean mDefaultBgCurrentDrainAutoRestrictAbusiveAppsEnabled; /** * Default value to {@link #mBgCurrentDrainRestrictedBucketTypes}. */ Loading Loading @@ -1429,6 +1444,11 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> */ volatile boolean mBgCurrentDrainEventDurationBasedThresholdEnabled; /** * @see #KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED. */ volatile boolean mBgCurrentDrainAutoRestrictAbusiveAppsEnabled; /** * @see #KEY_BG_CURRENT_DRAIN_TYPES_TO_RESTRICTED_BUCKET. */ Loading Loading @@ -1520,6 +1540,8 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> R.integer.config_bg_current_drain_location_min_duration) * 1_000; mDefaultBgCurrentDrainEventDurationBasedThresholdEnabled = resources.getBoolean( R.bool.config_bg_current_drain_event_duration_based_threshold_enabled); mDefaultBgCurrentDrainAutoRestrictAbusiveAppsEnabled = resources.getBoolean( R.bool.config_bg_current_drain_auto_restrict_abusive_apps); mDefaultCurrentDrainTypesToRestrictedBucket = resources.getInteger( R.integer.config_bg_current_drain_types_to_restricted_bucket); mDefaultBgCurrentDrainTypesToBgRestricted = resources.getInteger( Loading Loading @@ -1569,6 +1591,9 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> case KEY_BG_CURRENT_DRAIN_POWER_COMPONENTS: updateCurrentDrainThreshold(); break; case KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED: updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled(); break; case KEY_BG_CURRENT_DRAIN_WINDOW: updateCurrentDrainWindow(); break; Loading Loading @@ -1701,6 +1726,13 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> DEFAULT_BG_CURRENT_DRAIN_DECOUPLE_THRESHOLD); } private void updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled() { mBgCurrentDrainAutoRestrictAbusiveAppsEnabled = DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED, mDefaultBgCurrentDrainAutoRestrictAbusiveAppsEnabled); } @Override public void onSystemReady() { mBatteryFullChargeMah = Loading @@ -1714,6 +1746,7 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> updateCurrentDrainEventDurationBasedThresholdEnabled(); updateCurrentDrainExemptedTypes(); updateCurrentDrainDecoupleThresholds(); updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled(); } @Override Loading @@ -1728,9 +1761,12 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> if (pair != null) { final long lastInteractionTime = mLastInteractionTime.get(uid, 0L); final long[] ts = pair.first; final int restrictedLevel = ts[TIME_STAMP_INDEX_RESTRICTED_BUCKET] > (lastInteractionTime + mBgCurrentDrainInteractionGracePeriodMs) && mTracker.mAppRestrictionController.isAutoRestrictAbusiveAppEnabled() final boolean noInteractionRecently = ts[TIME_STAMP_INDEX_RESTRICTED_BUCKET] > (lastInteractionTime + mBgCurrentDrainInteractionGracePeriodMs); final boolean canRestrict = mTracker.mAppRestrictionController.isAutoRestrictAbusiveAppEnabled() && mBgCurrentDrainAutoRestrictAbusiveAppsEnabled; final int restrictedLevel = noInteractionRecently && canRestrict ? RESTRICTION_LEVEL_RESTRICTED_BUCKET : RESTRICTION_LEVEL_ADAPTIVE_BUCKET; if (maxLevel > RESTRICTION_LEVEL_BACKGROUND_RESTRICTED) { Loading Loading @@ -2066,6 +2102,10 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> pw.print('='); pw.println(mBgCurrentDrainEventDurationBasedThresholdEnabled); pw.print(prefix); pw.print(KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED); pw.print('='); pw.println(mBgCurrentDrainAutoRestrictAbusiveAppsEnabled); pw.print(prefix); pw.print(KEY_BG_CURRENT_DRAIN_TYPES_TO_RESTRICTED_BUCKET); pw.print('='); pw.println(batteryUsageTypesToString(mBgCurrentDrainRestrictedBucketTypes)); Loading
services/tests/mockingservicestests/src/com/android/server/am/BackgroundRestrictionTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -585,6 +585,7 @@ public final class BackgroundRestrictionTest { DeviceConfigSession<Long> bgCurrentDrainInteractionGracePeriod = null; DeviceConfigSession<Float> bgCurrentDrainRestrictedBucketThreshold = null; DeviceConfigSession<Float> bgCurrentDrainBgRestrictedThreshold = null; DeviceConfigSession<Boolean> bgCurrentDrainAutoRestrictAbusiveApps = null; DeviceConfigSession<Boolean> bgPromptFgsWithNotiToBgRestricted = null; DeviceConfigSession<Boolean> bgPromptAbusiveAppToBgRestricted = null; DeviceConfigSession<Long> bgNotificationMinInterval = null; Loading Loading @@ -644,6 +645,14 @@ public final class BackgroundRestrictionTest { isLowRamDeviceStatic() ? 1 : 0]); bgCurrentDrainBgRestrictedThreshold.set(bgRestrictedThreshold); bgCurrentDrainAutoRestrictAbusiveApps = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, AppBatteryPolicy.KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED, DeviceConfig::getBoolean, mContext.getResources().getBoolean( R.bool.config_bg_current_drain_auto_restrict_abusive_apps)); bgCurrentDrainAutoRestrictAbusiveApps.set(true); bgPromptFgsWithNotiToBgRestricted = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, ConstantsObserver.KEY_BG_PROMPT_FGS_WITH_NOTIFICATION_TO_BG_RESTRICTED, Loading Loading @@ -1099,6 +1108,7 @@ public final class BackgroundRestrictionTest { closeIfNotNull(bgCurrentDrainInteractionGracePeriod); closeIfNotNull(bgCurrentDrainRestrictedBucketThreshold); closeIfNotNull(bgCurrentDrainBgRestrictedThreshold); closeIfNotNull(bgCurrentDrainAutoRestrictAbusiveApps); closeIfNotNull(bgPromptFgsWithNotiToBgRestricted); closeIfNotNull(bgPromptAbusiveAppToBgRestricted); closeIfNotNull(bgNotificationMinInterval); Loading Loading @@ -1651,6 +1661,7 @@ public final class BackgroundRestrictionTest { DeviceConfigSession<Float> bgCurrentDrainBgRestrictedThreshold = null; DeviceConfigSession<Float> bgCurrentDrainRestrictedBucketHighThreshold = null; DeviceConfigSession<Float> bgCurrentDrainBgRestrictedHighThreshold = null; DeviceConfigSession<Boolean> bgCurrentDrainAutoRestrictAbusiveApps = null; DeviceConfigSession<Long> bgMediaPlaybackMinDurationThreshold = null; DeviceConfigSession<Long> bgLocationMinDurationThreshold = null; DeviceConfigSession<Boolean> bgCurrentDrainEventDurationBasedThresholdEnabled = null; Loading Loading @@ -1736,6 +1747,14 @@ public final class BackgroundRestrictionTest { isLowRamDeviceStatic() ? 1 : 0]); bgCurrentDrainBgRestrictedHighThreshold.set(bgRestrictedHighThreshold); bgCurrentDrainAutoRestrictAbusiveApps = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, AppBatteryPolicy.KEY_BG_CURRENT_DRAIN_AUTO_RESTRICT_ABUSIVE_APPS_ENABLED, DeviceConfig::getBoolean, mContext.getResources().getBoolean( R.bool.config_bg_current_drain_auto_restrict_abusive_apps)); bgCurrentDrainAutoRestrictAbusiveApps.set(true); bgMediaPlaybackMinDurationThreshold = new DeviceConfigSession<>( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, AppBatteryPolicy.KEY_BG_CURRENT_DRAIN_MEDIA_PLAYBACK_MIN_DURATION, Loading Loading @@ -2226,6 +2245,7 @@ public final class BackgroundRestrictionTest { closeIfNotNull(bgCurrentDrainBgRestrictedThreshold); closeIfNotNull(bgCurrentDrainRestrictedBucketHighThreshold); closeIfNotNull(bgCurrentDrainBgRestrictedHighThreshold); closeIfNotNull(bgCurrentDrainAutoRestrictAbusiveApps); closeIfNotNull(bgMediaPlaybackMinDurationThreshold); closeIfNotNull(bgLocationMinDurationThreshold); closeIfNotNull(bgCurrentDrainEventDurationBasedThresholdEnabled); Loading