19

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

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

提前致谢。

4

1 回答 1

27

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

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

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

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

于 2013-03-25T14:57:57.597 回答