Длительное постоянное TCP-соединение на Android

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

3 ответов


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

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

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

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

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


поддержание открытого соединения can перевести на меньшее потребление ресурсов: небольшой "ручеек" трафик может поддерживать соединение открытым.

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

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


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

  • браузер на стороне клиента может быть ограничен количеством соединений на окно / вкладку и т. д.
  • промежуточные устройства (например, Nat, брандмауэры) не могут повторно использовать порт так часто, чтобы обслуживать другие запросы

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