我已经阅读了网上的一些文章和StackOverFlow上的一些问题,但似乎没有人肯定答案a)如果google使用Long Lived TCP连接进行Gmail,Mail等,并且b)如果在自定义应用中使用它将耗尽电池寿命,如果这样大致多少?
您的第一个问题的答案是,是的,谷歌的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或更高版本上使用。
维护开放连接可以转化为更少的资源使用:小的“涓流”流量可以保持连接打开。
考虑相反的情况:客户端定期“轮询”服务器(假设与长期连接“涓流”相同的“刷新”速率):每次打开新连接时都会产生更多流量。
连接设置/拆卸是昂贵的(当然,在这个宇宙中一切都是相对的;-)。
保持开放连接的主要缺点:
tcpdump
或wireshark
等工具来确定Google应用程序保持打开TCP连接的时间。您需要过滤您感兴趣的端口或地址。