From 11381d0d772ebd2e0c9a3bab8f85642dd30f1195 Mon Sep 17 00:00:00 2001 From: Suprabh Shukla Date: Sat, 11 Feb 2023 02:32:33 -0800 Subject: [PATCH] Move lower idle alarm throttling to rolling quotas ALLOW_WHILE_IDLE_COMPAT_QUOTA is used for throttling the following allowed-while-idle alarms: - Inexact alarms that use a PendingIntent - Listener alarms - Exact alarms for pre-S apps - Alarms from system power allowlisted apps This quota has stayed at 1/9 minutes for legacy reasons. Fixed delay throttling is suitable for a small subset of apps that have a sustained presence and require periodic alarms for a long duration of time. Such use cases can now move to the setPrioritized API. Moving this quota to an equivalent rolling window quota of 7/hour since that would generally be better suited for a large majority of apps as it allows greater flexibility within the window. Test: atest FrameworksMockingServicesTests:AlarmManagerServiceTest Test: atest CtsAlarmManagerTestCases Test: atest CtsBatterySavingTestCases:BatterySaverAlarmTest Bug: 209514618 Change-Id: Iad8c3a4f652d1a95bd0deb9b49ecefa6f8bf5b64 Merged-In: Iad8c3a4f652d1a95bd0deb9b49ecefa6f8bf5b64 (cherry picked from commit 5cef33d2889f94bf8b4ec2cb91395fd67d2072f1) --- .../java/com/android/server/alarm/AlarmManagerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java index e2fff0f9af77e..deb8a630e8a99 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java @@ -766,11 +766,11 @@ public class AlarmManagerService extends SystemService { * Default quota for pre-S apps. The same as allowing an alarm slot once * every ALLOW_WHILE_IDLE_LONG_DELAY, which was 9 minutes. */ - private static final int DEFAULT_ALLOW_WHILE_IDLE_COMPAT_QUOTA = 1; + private static final int DEFAULT_ALLOW_WHILE_IDLE_COMPAT_QUOTA = 7; private static final int DEFAULT_ALLOW_WHILE_IDLE_QUOTA = 72; private static final long DEFAULT_ALLOW_WHILE_IDLE_WINDOW = 60 * 60 * 1000; // 1 hour. - private static final long DEFAULT_ALLOW_WHILE_IDLE_COMPAT_WINDOW = 9 * 60 * 1000; // 9 mins. + private static final long DEFAULT_ALLOW_WHILE_IDLE_COMPAT_WINDOW = 60 * 60 * 1000; private static final long DEFAULT_PRIORITY_ALARM_DELAY = 9 * 60_000;