diff options
Diffstat (limited to 'services/java/com/android/server/AlarmManagerService.java')
-rw-r--r-- | services/java/com/android/server/AlarmManagerService.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/services/java/com/android/server/AlarmManagerService.java b/services/java/com/android/server/AlarmManagerService.java index 5e54d61..5ffcdc5 100644 --- a/services/java/com/android/server/AlarmManagerService.java +++ b/services/java/com/android/server/AlarmManagerService.java @@ -764,12 +764,18 @@ class AlarmManagerService extends IAlarmManager.Stub { public void scheduleTimeTickEvent() { Calendar calendar = Calendar.getInstance(); - calendar.setTimeInMillis(System.currentTimeMillis()); + final long currentTime = System.currentTimeMillis(); + calendar.setTimeInMillis(currentTime); calendar.add(Calendar.MINUTE, 1); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); - - set(AlarmManager.RTC, calendar.getTimeInMillis(), mTimeTickSender); + + // Schedule this event for the amount of time that it would take to get to + // the top of the next minute. + final long tickEventDelay = calendar.getTimeInMillis() - currentTime; + + set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + tickEventDelay, + mTimeTickSender); } public void scheduleDateChangedEvent() { |