Обрабатывает ли Android AlarmManager переход на летнее время?


Я создаю приложение для будильника в Android. AlarmManager автоматически обрабатывает изменения часов между летним и зимним временем или мне нужно управлять этим явно?

Edit: если сигнал тревоги установлен там, где интервал повторения пересекает смену часов, нужно ли будет перепланировать этот сигнал?

2 3

2 ответа:

AlarmManager позаботится об экономии дневного света. Он сбрасывает информацию о часовом поясе в начале каждого дня, принимая во внимание информацию о переходе на летнее время.

В отличие от того, что принятый ответ говорит, что я видел другое поведение в моем приложении, у меня есть задача, выполняемая ежедневно через несколько минут после полуночи.

После перехода на летнее время задача начала выполняться через несколько минут после 11: 00 вечера, что привело к возвращению неверных результатов (задача проверяет текущую дату и запрашивает материал соответственно).

Так что мой ответ - да, вам нужно будет управлять этим явно.

EDIT: наша задача должна выполняться один раз в день в указанное время. время. Чтобы решить эту проблему, мы сохраняем время последнего запуска нашего приложения и проверяем эту метку времени при повторном запуске задачи. Если отметка времени не 24 часа (может быть 23 часа или 25 часов из-за изменения DST), мы прерываем AlarmManager и назначаем новый вместо этого. Таким образом, у нас есть до 2 "пропущенных" пробегов в год (мы можем жить с этим).