Экономия батареи Android - PullRequest
       30

Экономия батареи Android

1 голос
/ 24 ноября 2011

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

Я собираюсь уменьшить тики таймера с 200 мс до 800 мс, а работающий поток обслуживания с 500 до 800. Это должно сэкономить батарею, я подозреваю.

Но несколько вопросов:

  1. Мой главный вопрос: когда экран заблокирован (у меня частичная блокировка после пробуждения), продолжает ли Android обновлять экран? Если это так, я мог бы попытаться не отправлять информацию об обновлении, когда экран выключен (как я могу определить, заблокирован ли экран?). Как вы думаете, это может помочь?

  2. Известны ли вам лучшие практики в программировании или разработке приложений для экономии заряда батареи? Я искал в Интернете об этом, но не нашел ничего интересного.

  3. Имеет ли база данных открытый аккумулятор?

спасибо

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

1: Вы можете использовать Alarmmanager для выполнения обновлений.(Посмотрите здесь: andwid appwidgets .

Примечание. Если устройство спит, когда наступает время обновления (как определено updatePeriodMillis), то устройство будет активированодля выполнения обновления. Если вы не обновляете более одного раза в час, это, вероятно, не вызовет значительных проблем в течение срока службы батареи. Если, однако, вам нужно обновлять чаще и / или вам не нужнодля обновления, пока устройство находится в спящем режиме, вместо этого вы можете выполнять обновления на основе сигнала тревоги, который не разбудит устройство. Для этого установите сигнал тревоги с намерением, которое получает ваш AppWidgetProvider, с помощью AlarmManager. Установите тип сигнала тревоги либоELAPSED_REALTIME или RTC, который будет доставлять сигнал тревоги только при включенном устройстве. Затем установите updatePeriodMillis на ноль ("0").

Это должно использоваться для виджетов и "нормальной" активности.

2: я не знаю официального документа, но вы должны задать себе следующие вопросы: необходимо ли обновлятьт часто?Если до мероприятия осталось 5 часов, нужно ли вам обновлять графический интерфейс каждую секунду или каждую минуту?Вы могли бы каскадно обновлять: чем ближе событие, тем более частыми становятся обновления.

3: Я думаю, что нет.

0 голосов
/ 24 ноября 2011
  1. (В зависимости от вашего кода) Ваша служба продолжает работать и отправляет события обновления, потребляющие циклы ЦП и расход энергии. Какую бы активность вы ни пытались обновить, она уже приостановлена ​​после блокировки экрана. Существуют стандартные трансляции для выключения экрана / включения экрана - просто примите их в свой сервис и перестаньте работать. Или же остановите службу, когда обновляемое действие получит обратный вызов onPause (), и перезапустите его в onResume () (нет смысла обновлять действие, если оно не сфокусировано)

  2. см. 1 и учебники по Grok Android. Основная идея: не делать бесполезных вещей.

  3. Это не так. если вы не запрашиваете.

...