Уменьшение воздействия батареи приложений, которые загружают контент через радио на смартфоне - PullRequest
69 голосов
/ 31 марта 2012

Если я создаю приложение для смартфона, которое регулярно загружает данные с сервера, а также периодически загружает данные (аналитика, реклама и т. Д.), Что я могу сделать, чтобы минимизировать влияние этих передач на срок службы батареи?

Воздействие батареи при передаче с использованием беспроводной радиосвязи (2G, 3G, LTE и т. Д.) Является особенно значительным.Есть ли что-то в профиле энергопотребления беспроводного радио, которое должно повлиять на мой выбор того, когда, что и как передавать данные, чтобы минимизировать его влияние на срок службы батареи?

Ответы [ 2 ]

79 голосов
/ 31 марта 2012

Этот ответ обобщен из класса Android Training Передача данных без разряда батареи , в котором объясняется, как минимизировать влияние загрузки и сетевых подключений на время автономной работы, особенно в отношении беспроводной радиосвязи.,

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

Конечный автомат радиосвязи

Ссылка

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

Типичная 3G-радиостанция будет работать на полной мощности в течение 5 секунд после завершения передачи, прежде чем ждать еще 12 секунд в состоянии низкого энергопотребления, прежде чем перейти в режим ожидания.В общей сложности радио будет потреблять электроэнергию почти 20 секунд каждый раз, когда вы устанавливаете соединение.

Этот подход может привести к неэффективности приложений, работающих на современных ОС смартфонов, где приложения работают как на переднем плане (где задержка важна) и в фоновом режиме (там, где срок службы батареи должен быть приоритетным).

Решения

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

Зная, что каждый раз, когда вы инициируете соединение, вы потенциально заставляете радио работать в течение почти 20 секунд, важно объединить ваши передачи данных так,что вы фактически выполняете фазовые переносы, которые должны происходить в одном и том же временном окне, так что вы переносите как можно больше данных во время каждого сеанса передачи, чтобы минимизировать количество сеансов.

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

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

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

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

11 голосов
/ 03 апреля 2012

Я рекомендую вам добавить настройку «Как часто синхронизировать» в настройки вашего приложения, чтобы пользователь имел некоторое мнение о балансе свежести данных и использования батареи.У разных пользователей разные приоритеты.

...