Долгоживущее постоянное TCP-соединение на Android - PullRequest
14 голосов
/ 18 ноября 2009

Я прочитал несколько статей в Интернете и несколько вопросов о StackOverFlow, но, похоже, никто не может дать однозначный ответ по поводу а) Если Google использует TCP-соединения с долгоживущим доступом для Gmail, Mail и т. Д., И б) Если он используется пользовательское приложение будет расходовать заряд батареи, а если примерно, то сколько?

Ответы [ 3 ]

14 голосов
/ 25 ноября 2010

Ответ на ваш первый вопрос заключается в том, что да, Google GTalkService поддерживает постоянное соединение XMPP с серверами Google на телефонах Android с установленными приложениями Google.

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

См. Эту статью для получения дополнительной информации:

https://www.ericsson.com/research-blog/smartphone-traffic-impact-battery-networks/

Если возможно, вы можете рассмотреть возможность использования нового API-интерфейса обмена сообщениями между облаками и устройствами, который поддерживает GTalkService, позволяя вашему приложению получать уведомления, не поддерживая собственное TCP-соединение. К сожалению, минусом является то, что C2DM не будет работать на Android с открытым исходным кодом, для этого требуется, чтобы пользователь вошел в свою учетную запись Google, и он доступен только на Froyo или выше.

2 голосов
/ 18 ноября 2009

Поддержание открытого соединения может переводить на меньшее использование ресурсов: небольшой «струйный» трафик может поддерживать соединение открытым.

Рассмотрим противоположную ситуацию: клиент «опрашивает» сервер через регулярные промежутки времени (допустим, что частота обновления «та же», что и для долгоживущего соединения «струйка»): каждый раз, когда открывается новое соединение, генерируется больше трафика.

Установка / разрыв соединения дорог (конечно, в этой вселенной все относительно; -).


Основные недостатки поддержания открытого соединения:

  • в браузере на стороне клиента может быть ограничено количество подключений на окно / вкладку и т. Д.
  • промежуточные устройства (например, NAT, межсетевые экраны) не могут повторно использовать порт так часто, чтобы обслуживать другие запросы
1 голос
/ 18 ноября 2009
  1. Вы можете использовать такой инструмент, как tcpdump или wireshark на своем маршрутизаторе или другом компьютере, чтобы определить, как долго соединения TCP остаются открытыми приложениями Google. Вам нужно будет отфильтровать интересующие вас порты или адреса.
  2. Если вы используете Android 1.6 , лучший способ определить разрядку - использовать новый индикатор использования батареи. Просто установите свое собственное приложение и посмотрите, что монитор говорит со временем.
...