summaryrefslogtreecommitdiff
path: root/apex
diff options
context:
space:
mode:
author Tetiana Meronyk <tetianameronyk@google.com> 2024-07-25 00:34:57 +0000
committer Tetiana Meronyk <tetianameronyk@google.com> 2024-07-26 15:40:16 +0000
commit49807788f0478a74b0ef084cb2f2626e087974c3 (patch)
tree95927f79845c47785f939d65dd1398b7a494de9e /apex
parent8148983150f22bcbb4973d9efb38b92bd104785d (diff)
Only schedule wakeups when alarm is set outside of user wakeup offset
Before this change, a repeat wakeup was scheduled for the same alarm when the user was started. This caused a lot of unnecessary kernel reschedules and user start calls. After this change, such repeat wakeups are not scheduled. Bug: 314907186 Test: UserWakeupStoreTest Flag: com.android.server.alarm.start_user_before_scheduled_alarms Change-Id: I054d1814eece95ff2d79b4460c37434f4ff9a3df
Diffstat (limited to 'apex')
-rw-r--r--apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java5
1 files changed, 3 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 ee03e4b2ccd1..87d157e63788 100644
--- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
@@ -4523,8 +4523,9 @@ public class AlarmManagerService extends SystemService {
final int[] userIds =
mUserWakeupStore.getUserIdsToWakeup(nowELAPSED);
for (int i = 0; i < userIds.length; i++) {
- if (!mActivityManagerInternal.startUserInBackground(
- userIds[i])) {
+ if (mActivityManagerInternal.isUserRunning(userIds[i], 0)
+ || !mActivityManagerInternal.startUserInBackground(
+ userIds[i])) {
mUserWakeupStore.removeUserWakeup(userIds[i]);
}
}