Влияние запросов http на время автономной работы - PullRequest
6 голосов
/ 07 января 2012

У меня есть проект, в котором клиентское приложение, вероятно, на устройстве Android, будет запрашивать некоторые файлы с сервера. Одной из реализаций является пакетная передача с сервера на устройство, где X-файлы отправляются вместе со ссылкой / указателем на следующий блок. Другая реализация - отправить список идентификаторов файлов, а затем сделать один http-запрос для каждого из идентификаторов и получить файлы по отдельности. Я слышал, что это действительно ухудшает срок службы батареи. Это правда?

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

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

Ответы [ 2 ]

4 голосов
/ 08 января 2012

Посмотрите на эти слайды из сеанса Google IO о времени автономной работы:

http://dl.google.com/io/2009/pres/W_0300_CodingforLife-BatteryLifeThatIs.pdf

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

4 голосов
/ 08 января 2012

Я слышал, что это действительно ухудшает срок службы батареи.Это правда?

Не обязательно.На большинстве устройств Android и HttpClient, и HttpUrlConnection могут поддерживать Keep-Alive, поэтому, если ваш HTTP-сервер настроен правильно и вы выполняете запросы довольно быстро, я не ожидаю существенной разницы.

В индивидуальном представлении клиент может получить файлы, когда он хочет, если он этого хочет.

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

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

Это будет зависеть от того, сколько вы скачиваете, как часто и т. Д.

Однако, ИМХО, вы сосредотачиваетесь не на той проблеме.

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

Следовательно, я бы использовалTrafficStats и попробуйте различные сценарии, чтобы увидеть, какую полосу пропускания вы действительно используете, и, следовательно, нужно ли вам искать способы потреблять меньшую полосу пропускания в целом (например, реже опрашивать), чтобы пользователи не обанкротились вашим приложением.Я подозреваю, что ваши проблемы с аккумулятором сами по себе позаботятся о себе как о побочном эффекте.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...