Android 上的长期持久 TCP 连接
-
20-09-2019 - |
题
我读过网上的一些文章和 StackOverFlow 上的一些问题,但似乎没有人对 a) 如果 google 对 Gmail、邮件等使用长寿命 TCP 连接,以及 b) 如果在自定义应用程序中使用它有明确的答案会耗尽电池寿命,如果会的话,大约会消耗多少?
解决方案
在回答你的第一个问题是,是的,谷歌的GTalkService保持与安装了谷歌应用产品的持久XMPP连接到谷歌的服务器,在Android手机。
至于你的第二个问题,这个问题的答案是不是这里的一些评论更复杂会让你相信。特别是,其他连接保持连接数据包 - 或任何小,但出现持续数据传输 - 可能会影响你的3G无线电的电源管理状态周期,其中的将的对电池寿命有显着的影响。
有关详情,请参阅这篇文章:
https://www.ericsson.com/研究-博客/智能交通冲击电池的网络/
如果可能的话,你可以考虑使用新的云,其寄生在GTalkService的顶部,让您的应用程序接收通知不维护自己的TCP连接设备信息API。这带来的不便,不幸的是,是C2DM将无法在纯开源的Android的工作,它要求用户签署到他或她的谷歌帐户,它仅适用于升级Froyo或以上。
其他提示
保持开放连接 能 转化为更少的资源使用:少量的“涓流”流量可以保持连接开放。
考虑相反的情况:客户端定期“轮询”服务器(假设与长期连接“trickle”相同的“刷新”率):每次打开新连接都会产生更多流量。
连接设置/拆除的成本很高(当然,在这个宇宙中,一切都是相对的;-)。
维持开放连接的主要缺点:
- 客户端浏览器可能会限制每个窗口/选项卡等的连接数量。
- 中间设备(例如NAT、防火墙)无法经常重用端口来服务其他请求
- 您可以像使用你的路由器或其他机器上
tcpdump
或wireshark
的工具,以确定如何长TCP连接保持谷歌的应用程序打开。您需要将您感兴趣的端口或地址过滤。 - 如果您使用的是的Android 1.6 ,以最好的方式确定漏极是使用新的电池使用指示器。只要安装您的自定义应用程序,看看监视器说,随着时间的推移。 醇>
不隶属于 StackOverflow