安卓的AlarmManager能处理夏令时变化吗?

4

我正在开发一款Android闹钟应用程序。AlarmManager在夏令时和冬令时之间自动处理时钟更改,还是我需要显式地管理它?

编辑:如果设置了一个重复间隔跨越时钟更改的闹铃,那么这个闹铃需要重新安排吗?

2个回答

6
与接受的答案相反,我在我的应用程序中看到了不同的行为,我有一个任务每天在午夜后几分钟运行。
夏令时更改后,任务开始在晚上11:00后几分钟运行,导致任务返回错误结果(任务检查当前日期并相应地查询内容)。
所以我的答案是-是的,您需要显式地管理它。
编辑:我们的任务需要在指定时间每天运行一次。为解决这个问题,我们保存了应用程序最后一次运行的时间戳,并在下次运行任务时检查该时间戳。如果时间戳不是24小时(可能因为夏令时更改而是23小时或25小时),我们会中止AlarmManager并代之以安排一个新的。所以我们每年最多错过2次运行(我们可以接受这种情况)。

我的应用程序也因为夏令时变化而失败了。如何管理它? - Sergio Viudes
谢谢marmor!我最终通过在每次闹钟响起时编程下一个闹钟来解决了问题,现在一切正常 :) - Sergio Viudes

-1

AlarmManager 会自动处理夏令时问题。它会在每天开始时重置时区信息,并考虑到夏令时的影响。


那么我每天都不需要重新安排闹钟吗?(请参见我在原问题中的编辑)。 - Leo
1
它应该可以正常工作,因为AlarmManager会在每天的开始重新计算,考虑到夏令时。 - havexz
3
它不会 - 至少在os 4.0.4上不会:我们最近切换了,我注意到闹钟会晚1小时响起!它被设置为在19:00(下午07:00)响起,现在它在20:00(下午08:00)响起。所以,它不是DST感知的...我完全同意@marmor的观点。 - Phantômaxx
2
我们最近更改了夏令时(2017年)。我收到了我的应用程序的报告,称调度程序(使用AlarmManager setRepeating方法)现在晚了1小时启动。所以,是的,看起来它没有被正确处理,似乎需要手动完成。 - Ferran Negre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接