【问题标题】:Long Lived Persistent TCP Connection on the AndroidAndroid 上的长寿命持久 TCP 连接
【发布时间】:2010-12-17 22:08:36
【问题描述】:

我已经阅读了网络上的一些文章和 StackOverFlow 上的一些问题,但似乎没有人对 a) 如果 google 对 Gmail、Mail 等使用 Long Lived TCP 连接,以及 b) 如果在自定义应用会消耗电池寿命,如果是这样,大概会消耗多少?

【问题讨论】:

  • .. 长期连接不是什么大问题如果没有太多流量...当然这是假设设备已开启完全没有。
  • 您是在问保持 TCP 连接打开是否会耗尽电池寿命?也许我离这里很远,但是保持连接打开不应该浪费电池寿命......如果你认为它会,我很想知道你从哪里得到这些信息。这对我来说听起来很奇怪。

标签: android tcp persistent


【解决方案1】:

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

至于你的第二个问题,这个问题的答案比这里的一些 cmets 让你相信的要复杂得多。特别是,额外连接的保活数据包(或任何小但持续发生的数据传输)会影响 3G 无线电的电源管理状态周期,这会对电池寿命产生显着影响。

查看这篇文章了解更多信息:

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

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

【讨论】:

【解决方案2】:

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

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

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


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

  • 客户端浏览器的每个窗口/选项卡等的连接数可能会受到限制。
  • 中间设备(例如 NAT、防火墙)不能经常重复使用端口来处理其他请求

【讨论】:

  • @jidupont - 所以如果我正确阅读了这个,保持连接“持久”将占用更少的资源,然后每 n 秒轮询一次(对我来说听起来很合理)。 @Everyone-else - 流量将在很长一段时间内为 0,直到用户执行从服务器开始推送的操作,(该操作在计算机上完成)但是这对用户来说会很痛苦如果他每次想要这样做时都必须启用“推送”,因此我想如果它真的不占用大量资源就让它运行。大家觉得呢?
【解决方案3】:
  1. 您可以在路由器或其他计算机上使用tcpdumpwireshark 之类的工具来确定Google 的应用程序保持TCP 连接打开的时间。您需要过滤您感兴趣的端口或地址。
  2. 如果您使用Android 1.6,确定电量消耗的最佳方法是使用新的电池使用指示器。只需安装您的自定义应用程序,然后查看监视器在一段时间内显示的内容。

【讨论】:

  • 确实是个好主意。我想我应该只运行一个自定义应用程序,让连接保持打开状态,一段时间内不要再查看电池使用情况。
  • 如果我查看电子邮件客户端和 Google Apps 套件(Gmail 和日历),它们都占用了大约 5-6% 的电池寿命。
猜你喜欢
  • 2010-09-14
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多