我需要在Android应用和外部服务器之间保持开放的双向通信渠道。我知道我可以使用GCM,但由于各种原因与Android本身无关,我想尽可能使用websockets。
在使用GCM时,是否有人能够指出我对资源/电池使用情况的比较与Android下的基于java的websockets客户端进行比较?
提前致谢。
答案 0 :(得分:26)
由于多个应用程序使用GCM,它使用单个套接字连接到Google云,因此使应用程序使用GCM进行通知不应影响电池寿命,因为它只使用现有连接。另一方面,您使用websockets创建的进程,只会在GCM上添加电池使用情况。
此外,如果您需要维护连接,即使应用程序不在前台,也需要将应用程序创建为前台服务。 GCM为您处理此事。
更新
使用GCM没有其他应用程序的设备是非常罕见的情况,因为gmail等许多基本应用程序都使用GCM。我没有准确的GCM电池使用数量。但是在this video中大约4分钟就提到了C2DM(GCM的前身使用相同的底层通信模型)的电池使用情况。我实际上有一个关于外部服务器的持久套接字连接的电池使用情况的类似问题( Android persistent socket connection rules)。虽然它不是一个websocket我会想象电池使用情况是相似的。但是,由于GCM内置于操作系统的更低级别,因此我将其映像为比定制解决方案更优化。
除非您有一些公司政策反对使用第三方服务器或某些非常具体的规范,否则我建议您使用GCM。我还鼓励观看有关C2DM的整个视频以及this video for GCM。