我正在考虑从Android应用程序使用持久连接到“云服务”。这将一直在后台服务(或类似的东西)中运行。
我正在考虑使用网络套接字或XMPP来保持连接,基本上寻找一种不会耗尽电池的轻量级连接。我希望能够实时推送通知到此连接,因此不需要定期轮询。 我知道C2DM和其他商业解决方案,但我希望推出自己的。这就是我正在调查的网络插座(或其他轻量级连接)的原因。所以如果我走这条路,我应该注意哪些最佳实践?
我在考虑这样的事情:
答案 0 :(得分:10)
这可能不是您正在寻找的答案,但我想您可能想重新考虑您的架构。
您可以从移动平台中获得的东西
基本上你的应用程序需要能够处理连接丢失,因为它几乎可以保证发生。
话虽如此,根据您对实时的定义,它完全可行。如果您愿意不断检查是否仍然存在可行连接,则可以将延迟时间保持在分钟范围内。但是这会耗尽电池电量,你无能为力。
答案 1 :(得分:1)
有些事情并不顺利。那是“实时推送通知”和“防止电池耗尽”。你一定要在这里妥协。
我只能推荐尝试一些使用XMPP的Android应用程序来了解它们如何处理持久连接,IP地址更改和电池消耗。如果它们是开源的,您还可以查看代码并从中学习。 Yaxim,Project MAXS和Beem等等。也许你也应该看看XEP-0286: XMPP on Mobile Devices
那就是说,当Google为您提供C2DM时,您确定要重新发明轮子吗?针对此用例进行了优化。我认为它有一些延迟,所以它不是“实时”的地方。但同样,要么你最终会得到一个解决方案,试图建立一个持久的连接和耗尽电池,或者你将不得不忍受某种延迟(约0-30分钟)。