2011-02-26 2 views
0

Я пытаюсь написать простое приложение, которое должно отключить мой мобильный телефон в течение заданного времени. Это мое первое приложение для Android, но после многих часов чтения я думаю, что он почти завершен. Но у него все еще есть одна проблема, которую я не могу исправить.Handler.postDelayed не вызывается, когда мобильный телефон в режиме ожидания

Я использую активность для отображения графического интерфейса. У этого есть Кнопки, чтобы установить время начала и окончания, и все остальное необходимо. Когда пользователь вводит все параметры, они передаются службе. Эта служба использует объект обработчика, чтобы зарегистрировать 2 обратных вызова (с Handler.postDelayed). Один для запуска Mute и один для End Mute (в SetMuteIntervall). Первые тесты, похоже, сработали, но если я попытаюсь отключить его примерно на 30 минут, он никогда не загорается. Я думаю, что это имеет какое-то отношение к тому, что мобильный телефон находится или находится в режиме ожидания. Я также пытался использовать Handler.postAt(), но это тоже не сработало (и время относительно времени безотказной работы было несколько запутанным).

Итак, что мне делать, чтобы гарантировать, что вызываются мои обратные вызовы, независимо от того, находится ли телефон в режиме ожидания или нет?

Вот источник моей программы:

http://pastebin.com/XAgCeAq9

http://pastebin.com/33nepFV5

ответ

1

Попробуйте использовать AlarmManager для планирования некоторых действий в будущем. AlarmManager не зависит от режима ожидания и срабатывает, даже если устройство спит.

Ваша тема фактически остановлена, а телефон находится в режиме ожидания. Если вы все еще хотите использовать поток, вы можете использовать WakeLock для предотвращения перехода процессора в режим ожидания (но все же отключить экран), но это не лучший способ в вашем случае.

Смежные вопросы