diff options
Diffstat (limited to 'apex')
-rw-r--r-- | apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java | 6 | ||||
-rw-r--r-- | apex/jobscheduler/service/java/com/android/server/alarm/UserWakeupStore.java | 12 |
2 files changed, 12 insertions, 6 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 dfa72069c28a..ee03e4b2ccd1 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java @@ -120,6 +120,7 @@ import android.os.SystemProperties; import android.os.ThreadLocalWorkSource; import android.os.Trace; import android.os.UserHandle; +import android.os.UserManager; import android.os.WorkSource; import android.provider.DeviceConfig; import android.provider.Settings; @@ -1794,7 +1795,8 @@ public class AlarmManagerService extends SystemService { mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class); mUseFrozenStateToDropListenerAlarms = Flags.useFrozenStateToDropListenerAlarms(); - mStartUserBeforeScheduledAlarms = Flags.startUserBeforeScheduledAlarms(); + mStartUserBeforeScheduledAlarms = Flags.startUserBeforeScheduledAlarms() + && UserManager.supportsMultipleUsers(); if (mStartUserBeforeScheduledAlarms) { mUserWakeupStore = new UserWakeupStore(); mUserWakeupStore.init(); @@ -3015,7 +3017,7 @@ public class AlarmManagerService extends SystemService { mUseFrozenStateToDropListenerAlarms); pw.println(); pw.print(Flags.FLAG_START_USER_BEFORE_SCHEDULED_ALARMS, - mStartUserBeforeScheduledAlarms); + Flags.startUserBeforeScheduledAlarms()); pw.decreaseIndent(); pw.println(); pw.println(); diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/UserWakeupStore.java b/apex/jobscheduler/service/java/com/android/server/alarm/UserWakeupStore.java index dc5e3414a819..93904a773ed5 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/UserWakeupStore.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/UserWakeupStore.java @@ -20,6 +20,7 @@ package com.android.server.alarm; import android.annotation.Nullable; import android.os.Environment; import android.os.SystemClock; +import android.os.UserHandle; import android.util.AtomicFile; import android.util.IndentingPrintWriter; import android.util.Pair; @@ -113,15 +114,18 @@ public class UserWakeupStore { } /** - * Add user wakeup for the alarm. + * Add user wakeup for the alarm if needed. * @param userId Id of the user that scheduled alarm. * @param alarmTime time when alarm is expected to trigger. */ public void addUserWakeup(int userId, long alarmTime) { - synchronized (mUserWakeupLock) { - mUserStarts.put(userId, alarmTime - BUFFER_TIME_MS + getUserWakeupOffset()); + // SYSTEM user is always running, so no need to schedule wakeup for it. + if (userId != UserHandle.USER_SYSTEM) { + synchronized (mUserWakeupLock) { + mUserStarts.put(userId, alarmTime - BUFFER_TIME_MS + getUserWakeupOffset()); + } + updateUserListFile(); } - updateUserListFile(); } /** |