Как улучшить сервис обновления данных для экономии заряда батареи для приложения Android

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

Мой вопрос в том, что:

  • Я хочу знать, когда приложение (а не конкретное действие) переходит в фоновый режим, например, пользователь нажал кнопку «Домой», в этом случае я хочу приостановить службу, чтобы сэкономить заряд батареи.
  • Я хочу знать, когда телефон спит (экран затемнен), в этом случае я также хотел бы приостановить службу.

Любые идеи?


person virsir    schedule 16.02.2011    source источник


Ответы (1)


  1. Приостановите службу в onPause (и возобновите в onResume).
  2. Если у вас нет блокировки пробуждения, ваше приложение не будет работать, когда телефон находится в спящем режиме.
  3. Если вы привязаны к приложению переднего плана, зачем вообще использовать службу?

Чтобы уточнить 1: я понимаю, что вы говорите «приложение», а не «конкретное действие», но лучше всего использовать Activity.onPause и Activity.onResume. Если что, можно добавить короткую задержку, чтобы ничего не происходило, если за onPause сразу следует onResume.

person EboMike    schedule 16.02.2011
comment
У меня есть вопрос для 2), я использовал AsyncTask для загрузки данных и postDelay для Runnable, чтобы перезагрузить его через несколько секунд после завершения действия загрузки. Когда я закрываю экран телефона, задача все еще работает и работает. - person virsir; 19.02.2011