Android上的长期持久TCP连接

时间:2009-11-18 15:20:15

标签: android tcp persistent

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

3 个答案:

答案 0 :(得分:14)

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

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

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

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

如果可能,您可以考虑使用新的云到设备消息传递API,它可以在GTalkService之上搭载,允许您的应用程序在不维护自己的TCP连接的情况下接收通知。不幸的是,缺点是C2DM无法在纯开源Android上运行,它需要用户登录他或她的Google帐户,而且只能在Froyo或更高版本上使用。

答案 1 :(得分:2)

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

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

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


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

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

答案 2 :(得分:1)

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