Websockets与Android下的GCM:电池使用情况?

19

我需要维护一种开放的、双向的通信渠道,使Android应用程序与外部服务器之间进行通信。我知道可以使用GCM来实现这一点,但出于各种与Android本身无关的原因,如果可能的话,我想使用websockets。

是否有人能够为我指出在Android下使用GCM与基于Java的Websockets客户端时,资源/电池使用情况的比较统计数据呢?

提前致谢。


您应该选择以下答案作为正确的答案。 - npgall
@HippopotamusMan,我有同样的请求,出于同样的原因。你能再介入一次吗?你还在使用自定义WebSockets还是使用FCM/GCM?我们正在测试我们的应用程序,它消耗了很多电池。不确定这是否与WebSockets有关,但我们认为是这样。 - Michael Burger
1个回答

28

由于多个应用程序使用GCM,它使用单个套接字连接到Google云,因此使您的应用程序使用GCM进行通知不应影响电池寿命,因为它只使用现有连接。另一方面,您创建的任何使用Websockets的进程都将在GCM之上添加电池使用。

此外,如果您需要在应用程序不在前台时仍保持连接,则需要将应用程序创建为前台服务。 GCM会为您处理这个问题。

更新
没有其他应用程序使用GCM的设备非常罕见,因为许多基本应用程序(如gmail)使用GCM。我没有确切的GCM电池使用量数字。但是,在该视频中提到了C2DM(GCM的前身,使用相同的底层通信模型)的电池使用情况,大约在4分钟左右。我实际上有一个类似的问题,关于与外部服务器的持久套接字连接的电池使用情况(Android persistent socket connection rules)。尽管它不是websocket,但我想象电池使用情况应该是相似的。但由于GCM内置于OS的更低级别,我想象它比定制解决方案更加优化。

除非您有一些反对使用第三方服务器的公司政策或某些非常特定的规格,否则我建议使用GCM。我还鼓励观看有关C2DM的整个视频以及有关GCM的此视频


谢谢,Alex。那么以下简单情况怎么办:只有一个Android进程需要与外部服务器进行双向通信?在这种退化情况下,GCM和Websockets在Android资源使用(电池等)方面是否同样有效,或者其中一个比另一个更好? - HippopotamusMan
已经更新了答案。无法在评论区内放下。 - Alex
谢谢。我稍后会看视频,你的信息非常有帮助。看起来我可能会使用GCM。 - HippopotamusMan
有哪些主要公司使用GCM?我已经阅读了许多帖子,引用了它需要15分钟以上才能发送一条消息的情况... - Sauron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接