diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java index 4dd88b20fb7f1..57c25a2d9a8ca 100644 --- a/services/core/java/com/android/server/AlarmManagerService.java +++ b/services/core/java/com/android/server/AlarmManagerService.java @@ -1732,9 +1732,10 @@ class AlarmManagerService extends SystemService { Alarm a = alarms.get(j); if (a.alarmClock != null) { final int userId = UserHandle.getUserId(a.uid); + AlarmManager.AlarmClockInfo current = mNextAlarmClockForUser.get(userId); if (DEBUG_ALARM_CLOCK) { - Log.v(TAG, "Found AlarmClockInfo at " + + Log.v(TAG, "Found AlarmClockInfo " + a.alarmClock + " at " + formatNextAlarm(getContext(), a.alarmClock, userId) + " for user " + userId); } @@ -1742,6 +1743,10 @@ class AlarmManagerService extends SystemService { // Alarms and batches are sorted by time, no need to compare times here. if (nextForUser.get(userId) == null) { nextForUser.put(userId, a.alarmClock); + } else if (a.alarmClock.equals(current) + && current.getTriggerTime() <= nextForUser.get(userId).getTriggerTime()) { + // same/earlier time and it's the one we cited before, so stick with it + nextForUser.put(userId, current); } } }