Длительное постоянное 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, брандмауэры) не могут повторно использовать порт так часто, чтобы обслуживать другие запросы
- вы можете использовать такой инструмент, как
tcpdump
илиwireshark
на маршрутизаторе или другом компьютере, чтобы определить, как долго TCP-соединения открыты приложениями Google. Вам нужно будет отфильтровать порты или адреса, которые вас интересуют. - Если вы используете Android 1.6, лучший способ определить слив-использовать новый индикатор использования батареи. Просто установите пользовательское приложение и посмотрите, что монитор говорит с течением времени.