Делаю будильник на андроид. После того, как пользователь запланировал сигнал тревоги, поток будет считать, пока сигнал тревоги не будет достигнут, а затем раздастся звуковой сигнал.
Однако поток подсчета останавливается, когда устройство заблокировано (я имею в виду, когда экран выключается через полминуты), и продолжает с того места, где он оставался, если он снова разблокирован, даже если это происходит через несколько часов.
Это делает приложение для будильника довольно странным. Я заглянул в AlarmManager, но мне кажется, что это не подходит для моего случая, поскольку я хочу, чтобы сигнал тревоги срабатывал только , если мое приложение все еще работает. Выход из приложения должен остановить его. Вот что говорится в документации AlarmManager:
Примечание. Диспетчер сигналов тревоги предназначен для случаев, когда вы хотите, чтобы код вашего приложения запускался в определенное время, даже если ваше приложение в настоящее время не запущено. Для обычных операций с таймингом (тики, тайм-ауты и т. Д.) Проще и эффективнее использовать Handler.
Упомянутый в нем класс «Handler», похоже, предназначен для чего-то совершенно другого, чем то, чего я пытаюсь достичь.
Итак, я спрашиваю вас: как я могу сохранить свою нить в рабочем состоянии и подсчитать, даже если устройство заблокировано? Или есть другой способ?