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

Posted

技术标签:

【中文标题】Android 下的 Websockets 与 GCM:电池使用情况?【英文标题】:Websockets versus GCM under Android: battery usage? 【发布时间】:2013-03-25 14:36:53 【问题描述】:

我需要在 android 应用和外部服务器之间维护一个开放的双向通信通道。我知道我可以为此使用 GCM,但由于与 Android 本身无关的各种原因,如果可能的话,我想使用 websockets。

谁能指出在 Android 下使用 GCM 与基于 java 的 websockets 客户端时资源/电池使用情况的比较?

提前致谢。

【问题讨论】:

你应该选择下面的答案作为正确的答案。 @HippopotamusMan 我有同样的要求,出于同样的原因。你能再跳进去吗?您还在使用自定义 WebSocket 还是使用 FCM / GCM?我们正在测试我们的应用程序,它正在使用大量电池。不确定这是否适用于 WebSocket,但我们认为是的。 【参考方案1】:

由于多个应用程序使用 GCM,它使用单个套接字连接到 Google 云,因此让您的应用程序使用 GCM 进行通知根本不会影响电池寿命,因为它只使用现有连接。另一方面,无论您使用 websockets 创建什么进程,电池使用量只会添加到 GCM 之上。

此外,如果即使应用程序不在前台,您也需要保持连接,则有必要将您的应用程序创建为前台服务。 GCM 会为您处理。

更新 没有使用 GCM 的其他应用程序的设备是非常罕见的情况,因为像 gmail 这样的许多基本应用程序都使用 GCM。我没有 GCM 电池使用量的确切数字。但是在大约 4 分钟后,this video 中提到了 C2DM(GCM 的前身,它使用相同的底层通信模型)的电池使用情况。我实际上有一个类似的问题,关于与外部服务器的持久套接字连接的电池使用情况(@987654322 @)。虽然它不是 websocket,但我会认为电池使用情况相似。但同样,由于 GCM 是在低得多的操作系统级别中内置的,因此我认为它比自定义解决方案更优化。

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

【讨论】:

谢谢,亚历克斯。那么下面这个简单的案例呢:一个且只有一个android进程需要与外部服务器进行双向通信?在这种退化的情况下,GCM 和 websockets 在 android 资源使用(电池等)方面是否同样有效,或者一个会比另一个更好。 添加了对答案的更新。无法将其放入 cmets 部分。 谢谢。我稍后会检查视频,您的信息很有帮助。看来我可能会使用 GCM。 哪些大公司使用GCM。我读过很多帖子,说发送一条消息需要 15 分钟以上...

以上是关于Android 下的 Websockets 与 GCM:电池使用情况?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Native Sockets 在 Android 中实现 WebSockets

是否可以在原生 Android 应用程序中使用 WebSockets 或类似的?

android中websockets的证书固定

Android 3.0 是不是支持 WebSockets?

WebSockets 能耗

带有 Android 的 WebSockets:URL 在哪里?