我有一个问题,我使用 AlarManager 每分钟更新一个小部件(它是一个时钟)以显示当前时间,但是,AlarmManager 永远不会与设备中的系统时钟同步,我使用这个:
alarmManager.setRepeating(AlarmManager.RTC, System.getCurrentTimeInMillis(), 60000, pendingIntent);
它每分钟都会工作,但是,问题是,如果我在下午 2:15:30 将小部件放在屏幕上,一分钟后,AlarmManager 将再次调用广播,因此下一次更新将在下午 2:16:30,并且不会与系统时间同步,因为当系统时间显示 2:16:00pm 时,小部件仍会显示下午 2:15:00。
希望我说得足够清楚,非常感谢您的帮助,谢谢。
最佳答案
setRepeating 的第二个参数是您希望警报第一次触发的时间。您需要进行算术以将其与下一分钟边界对齐。例如:
now = system.getCurrentTimeInMillis();
oneMinuteFromNow = now + oneMinute;
nextMinuteRollover = oneMinuteFromNow - (oneMinuteFromNow % oneMinute);
然后使用 nextMinuteRollover 作为 setRepeating 的第二个参数。
(这显然可以简化——我把它写得很详细,这样你就可以看到代码在做什么。)
关于android - 如何将AlarmManager与系统时间同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595462/