Android上的长期持久TCP连接

问题描述 投票:14回答:3

我已经阅读了网上的一些文章和StackOverFlow上的一些问题,但似乎没有人肯定答案a)如果google使用Long Lived TCP连接进行Gmail,Mail等,并且b)如果在自定义应用中使用它将耗尽电池寿命,如果这样大致多少?

android tcp persistent
3个回答
14
投票

您的第一个问题的答案是,是的,谷歌的GTalkService在安装了Google应用程序的Android手机上维持与谷歌服务器的持久XMPP连接。

关于你的第二个问题,答案比你认为的一些评论更复杂。特别是,附加连接的keepalive数据包 - 或任何小但持续发生的数据传输 - 可能会影响您的3G无线电的电源管理状态周期,这将对电池寿命产生显着影响。

有关更多信息,请参阅此文章:

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

如果可能,您可以考虑使用新的Cloud to Device Messaging API,该API可以在GTalkService之上,允许您的应用程序在不维护自己的TCP连接的情况下接收通知。不幸的是,缺点是C2DM不适用于纯开源Android,它要求用户登录他或她的Google帐户,并且只能在Froyo或更高版本上使用。


2
投票

维护开放连接可以转化为更少的资源使用:小的“涓流”流量可以保持连接打开。

考虑相反的情况:客户端定期“轮询”服务器(假设与长期连接“涓流”相同的“刷新”速率):每次打开新连接时都会产生更多流量。

连接设置/拆卸是昂贵的(当然,在这个宇宙中一切都是相对的;-)。


保持开放连接的主要缺点:

  • 客户端浏览器可能会受限于每个窗口/选项卡等的连接数。
  • 中间设备(例如NAT,防火墙)不能经常重用该端口以服务于其他请求

1
投票
  1. 您可以在路由器或其他计算机上使用tcpdumpwireshark等工具来确定Google应用程序保持打开TCP连接的时间。您需要过滤您感兴趣的端口或地址。
  2. 如果您使用Android 1.6,确定排水的最佳方法是使用新的电池使用指示器。只需安装自定义应用,然后查看显示器随时间推移的内容。
© www.soinside.com 2019 - 2024. All rights reserved.