Подтвердить что ты не робот

Снижение нагрузки на батареи приложений, загружающих контент через смартфон

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

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

4b9b3361

Ответ 1

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

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

Оператор беспроводной радиосвязи

Ссылка

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

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

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

Решения

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

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

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

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

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

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

Ответ 2

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