Альтернативы вейклокам?

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

Прямо сейчас я использую фоновый поток, который спит в течение x минут, а затем уведомляет основной поток о начале отправки данных.

Однако у меня возникают проблемы с этим методом из-за спящего режима ЦП, что, по-видимому, влияет на время ожидания потока.

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

Поэтому мне было интересно, есть ли какие-либо альтернативы wakelocks, которые могут гарантировать, что определенная часть логики всегда будет работать в фоновом режиме через каждые x минут, в идеале пробуждая процессор только тогда, когда это необходимо?

Заранее спасибо.


person SJunejo    schedule 30.07.2013    source источник
comment
Используйте AlarmManager для установки жестких интервалов. Он разбудит устройство, если оно спит. Пока ваше приложение делает свое дело, захватите wakelock, чтобы устройство не уснуло, и отпустите его после того, как вы закончите.   -  person Srikant Sahay    schedule 30.07.2013


Ответы (1)


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

person Raiv    schedule 30.07.2013