Android: продолжайте работу потока, даже если устройство заблокировано

Делаю будильник на андроид. После того, как пользователь запланировал сигнал тревоги, поток будет считать, пока сигнал тревоги не будет достигнут, а затем раздастся звуковой сигнал.

Однако поток подсчета останавливается, когда устройство заблокировано (я имею в виду, когда экран выключается через полминуты), и продолжает с того места, где он оставался, если он снова разблокирован, даже если это происходит через несколько часов.

Это делает приложение для будильника довольно странным. Я заглянул в AlarmManager, но мне кажется, что это не подходит для моего случая, поскольку я хочу, чтобы сигнал тревоги срабатывал только , если мое приложение все еще работает. Выход из приложения должен остановить его. Вот что говорится в документации AlarmManager:

Примечание. Диспетчер сигналов тревоги предназначен для случаев, когда вы хотите, чтобы код вашего приложения запускался в определенное время, даже если ваше приложение в настоящее время не запущено. Для обычных операций с таймингом (тики, тайм-ауты и т. Д.) Проще и эффективнее использовать Handler.

Упомянутый в нем класс «Handler», похоже, предназначен для чего-то совершенно другого, чем то, чего я пытаюсь достичь.

Итак, я спрашиваю вас: как я могу сохранить свою нить в рабочем состоянии и подсчитать, даже если устройство заблокировано? Или есть другой способ?


person Jeff Seagall    schedule 16.01.2011    source источник
comment
Можете ли вы установить какое-либо состояние при завершении работы приложения и прочитать его позже при тревожном событии?   -  person gbn    schedule 16.01.2011
comment
Вы говорите, что хотите, чтобы сигнал тревоги срабатывал только в том случае, если ваше приложение все еще работает. Что значит бег для вашего приложения? Идея Android может отличаться от того, что вы хотите, чтобы ваше приложение донесло до пользователя.   -  person adamp    schedule 17.01.2011


Ответы (2)


Вам не нужно этого делать. Не храните нить для будильника. Используйте AlarmManager.

Также нет понятия "запущено" ваше приложение или нет. Вы имеете в виду только тогда, когда это видно? Просто сбросьте свой будильник в onPause ().

person Falmarri    schedule 17.01.2011

Почему при использовании не используются уведомления? Вы можете настроить звук, вибрацию, свет и отображение значка в строке состояния. Если вы хотите отменить уведомление, используйте NotificationManager.

http://developer.android.com/guide/topics/ui/notifiers/notifications.html#CreateANotification

Geert

person Geert R    schedule 16.01.2011
comment
Я использую NotificationManager, но могу ли я запланировать уведомления на более позднее время? - person Jeff Seagall; 17.01.2011
comment
Вы можете сказать им, когда это произойдет, или вы имеете в виду 10 раз за 10 секунд ?? - person Geert R; 17.01.2011