首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将AlarmManager与系统时间同步?

如何将AlarmManager与系统时间同步?
EN

Stack Overflow用户
提问于 2013-09-03 14:57:50
回答 1查看 500关注 0票数 2

我有一个问题,我使用AlarManager每分钟更新一个Widget (这是一个时钟)来显示当前时间,但是,AlarmManager从来没有与设备中的系统时钟同步,我使用如下:

代码语言:javascript
复制
alarmManager.setRepeating(AlarmManager.RTC, System.getCurrentTimeInMillis(), 60000, pendingIntent);

但是,它每分钟都能工作,但问题是,如果我将小部件放在屏幕上的时间是下午2:15:30 (例如下午2:15:30),那么在此一分钟之后,AlarmManager将再次调用广播,因此下一次更新将在下午2:16:30进行,并且不会与系统时间同步,因为当系统时间显示2:16:00时,小部件仍将显示2:15:00。

我希望我说的够清楚了,我会感谢你的帮助,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 15:05:54

setRepeating的第二个参数是您希望第一次触发警报的时间。你需要做算法,使它与下一分钟的边界对齐。例如:

代码语言:javascript
复制
 now = system.getCurrentTimeInMillis();
 oneMinuteFromNow = now  + oneMinute;
 nextMinuteRollover = oneMinuteFromNow - (oneMinuteFromNow % oneMinute);

然后使用nextMinuteRollover作为setRepeating的第二个参数。

(这显然可以简化--我把它做得很详细,这样您就可以看到代码在做什么。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18595462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档