Вопросы о поведении Alarm Manager и wakelocks - PullRequest
2 голосов
/ 11 января 2012

Я использую диспетчер аварийных сигналов в своем сервисе, чтобы устанавливать аварийные сигналы каждые 15 секунд для выполнения определенной задачи. Я не хочу будить телефон, так как задача не критична по времени, поэтому я использую флаг ELAPSED_REALTIME для установки будильника. Вот код:

alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 15 * 1000, intentRecurringChecks);

В моих журналах я замечаю, что задача выполняется каждые 15 секунд. Означает ли это, что телефон не спит, хотя его экран выключен на полчаса? Можно ли быть уверенным, что мое приложение не пробуждает телефон?

Я ищу эту тему, но не могу найти правильный ответ.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 11 января 2012

Во-первых, вы не должны использовать AlarmManager для таких таймаутов. Это явно упоминается в документации (читайте жирным шрифтом). В вашем случае лучше использовать таймеры Handler. Вот пример: Повторить задачу с задержкой? .

Во-вторых, когда устройство подключено через USB, оно не переходит в режим глубокого сна. Вы должны отключить устройство подождать минуту или две. Прикрепите его назад и проанализируйте журналы.

...