Обрабатывает ли Android AlarmManager переход на летнее время?
Я создаю приложение для будильника в Android. AlarmManager автоматически обрабатывает изменения часов между летним и зимним временем или мне нужно управлять этим явно?
Edit: если сигнал тревоги установлен там, где интервал повторения пересекает смену часов, нужно ли будет перепланировать этот сигнал?
2 ответа:
AlarmManager
позаботится об экономии дневного света. Он сбрасывает информацию о часовом поясе в начале каждого дня, принимая во внимание информацию о переходе на летнее время.
В отличие от того, что принятый ответ говорит, что я видел другое поведение в моем приложении, у меня есть задача, выполняемая ежедневно через несколько минут после полуночи.
После перехода на летнее время задача начала выполняться через несколько минут после 11: 00 вечера, что привело к возвращению неверных результатов (задача проверяет текущую дату и запрашивает материал соответственно).
Так что мой ответ - да, вам нужно будет управлять этим явно.EDIT: наша задача должна выполняться один раз в день в указанное время. время. Чтобы решить эту проблему, мы сохраняем время последнего запуска нашего приложения и проверяем эту метку времени при повторном запуске задачи. Если отметка времени не 24 часа (может быть 23 часа или 25 часов из-за изменения DST), мы прерываем
AlarmManager
и назначаем новый вместо этого. Таким образом, у нас есть до 2 "пропущенных" пробегов в год (мы можем жить с этим).