Получите блокировку от пробуждения, отпустите ее и получите снова, пока телефон спит

Я думаю, что это в значительной степени стандартный случай, уже описанный в другом вопросе SO, но мне все еще нужно разъяснение по этому вопросу:

Итак, у меня есть Android-приложение с Actvity и Сервисом. Деятельность не представляет интереса, но Сервис. Служба должна отправлять сообщения на удаленный сервер каждую минуту. Исходя из того, что я понимаю, мне нужно использовать WakeLocks, чтобы поддерживать работоспособность процессора при одновременном отключении экрана (чтобы я мог решить проблему, когда служба останавливается при выключении экрана). Все идет нормально.

У меня вопрос: могу ли я получить блокировку, отправить сообщение на сервер, снять блокировку и получить ее снова через одну минуту, чтобы во время этой одной минуты пауза ЦП тоже спал. С конечной целью сэкономить аккумулятор. Я боюсь, что ответ "нет", потому что, как только вы дадите процессору спать, вы не сможете разбудить его, если не с более низкого уровня (ОС, а не приложения).

С наилучшими пожеланиями

2 ответа

Менеджер сигналов тревоги - это то, что нужно, но вам также необходимо делегировать данные от получателя сигналов на WakefulIntentService, чтобы выполнить работу (так как приемник будет ANR через 5 секунд). См. Ссылки на PowerManager.PARTIAL_WAKE_LOCK для Android.

Ответ прост: нет. Что вы можете сделать в этом случае, так это установить PendingIntent и использовать диспетчер тревог Android, чтобы разбудить каждую минуту.

Другие вопросы по тегам