Расчет 3 дня для триггера - PullRequest
0 голосов
/ 23 июня 2011

Хорошо, у меня есть диспетчер сигналов тревоги, который я должен отключать каждые три дня. Когда он отключается, я записываю текущее системное время в общие настройки, чтобы при выключении телефона у меня было время последнего запуска.

мой вопрос: как рассчитать 3 дня с момента его последнего запуска после выключения телефона, поскольку я могу писать в общие настройки только при его срабатывании?

Я думал что-то вродеэто

long refresh = lastTime + (360000*24)*3;

, где lastTime - время последнего запуска, но если перезапуск телефона между ними не произойдет еще через 3 дня после перезагрузки, или я думаю, что это неправильно?

1 Ответ

0 голосов
/ 23 июня 2011

У вас отсутствует ноль (есть 86400000 миллисекунд в день), но кроме этого ваш подход выглядит нормально (при условии, что lastTime - это просто сохраненное значение из System.currentTimeMillis()). AlarmManager использует абсолютное время для времени запуска.

Если телефон был выключен более чем на 3 дня, то при восстановлении будильника он просрочится и немедленно сработает. Следует помнить одну вещь: если вы восстанавливаете повторяющуюся тревогу таким образом, и прошло 5 дней с момента ее последнего срабатывания, то при восстановлении с использованием даты в прошлом она срабатывает немедленно (просроченная тревога на 3-й день) и затем снова выстрелите через еще один день (тревога 6-го дня). Вы можете настроить это.

...