【问题标题】:Does Android AlarmManager handle daylight saving changes?Android AlarmManager 是否处理夏令时更改?
【发布时间】:2013-03-15 19:04:47
【问题描述】:

我正在 Android 中构建一个闹钟应用。 AlarmManager 是否会自动处理夏季和冬季之间的时钟变化,还是我需要明确管理?

编辑:如果在重复间隔与时钟更改相交的位置设置了闹钟,是否需要重新安排闹钟?

【问题讨论】:

    标签: android alarmmanager


    【解决方案1】:

    与公认的答案相反,我在我的应用中看到了不同的行为,我每天午夜后几分钟运行一项任务。

    夏令时更改后,任务在晚上 11:00 后开始运行几分钟,导致任务返回错误结果(任务检查当前日期并相应地查询内容)。

    所以我的回答是 - 是的,你需要明确地管理它。

    编辑:我们的任务需要每天在指定时间运行一次。 为了解决这个问题,我们保存了应用程序上次运行的时间,并在任务再次运行时检查该时间戳。 如果时间戳不是 24 小时(由于 DST 更改可能是 23 小时或 25 小时),我们将中止 AlarmManager 并安排一个新的。 所以我们每年最多有 2 次“错过”跑步(我们可以忍受)。

    【讨论】:

    • 由于夏令时更改,我的应用程序也失败了。如何管理?
    • 谢谢马尔默!我终于通过在每次触发时编写下一个警报来解决它,现在可以正常工作了:)
    【解决方案2】:

    AlarmManager 将负责节省日光。它会在每天开始时重置时区信息,并考虑夏令时信息。

    【讨论】:

    • 所以我不需要每天重新安排闹钟? (请参阅我在原始问题中的编辑)。
    • 它应该可以正常工作,因为 AlarmManager 将在每天开始时重新计算考虑到夏令时。
    • 它没有 - 至少在 os 4.0.4 上没有:我们最近切换了,我注意到警报在 1 小时后触发!它将在 19:00(07:00 pm)触发,现在它在 20:00(08:00 pm)触发。所以,它是 DST-aware ...我完全同意@marmor
    • 我们最近将时间更改为夏令时(2017 年)。我收到关于我的应用程序的报告说调度程序(使用AlarmManager setRepeating 方法)现在启动晚了 1 小时。所以,是的,它似乎没有正确处理,看起来需要手动完成。
    猜你喜欢
    • 2019-12-16
    • 2013-03-18
    • 2022-07-20
    • 1970-01-01
    • 2019-09-29
    • 2015-06-08
    • 2013-06-08
    • 2012-11-21
    • 2017-11-04
    相关资源
    最近更新 更多