我需要在Android应用程序和外部服务器之间保持一个开放的双向通信通道。我知道我可以使用GCM,但由于各种原因,不属于Android本身,我想使用websockets,如果可能的话。
有谁能告诉我在Android下使用GCM与基于java的websockets客户端时资源/电池使用情况的比较吗?
由于多个应用程序使用GCM,它使用一个套接字连接到谷歌云,使您的应用程序使用GCM通知应该不会影响电池寿命,因为它只是使用一个现有的连接。另一方面,无论你使用websockets创建什么进程,电池使用都会被添加到GCM之上。
另外,如果您需要在应用程序不在前台时保持连接,则有必要将您的应用程序创建为前台服务。GCM为您处理这个
没有其他应用程序使用GCM的设备是非常罕见的情况,因为许多重要的应用程序(如gmail)使用GCM。我没有GCM电池使用的确切数字。但是C2DM (GCM的前身,使用相同的底层通信模型)的电池使用情况在这个视频中大约4分钟就提到了。实际上,我有一个类似的问题,关于与外部服务器的持久套接字连接的电池使用情况(Android持久套接字连接规则)。虽然它不是websocket,但我认为电池的使用情况是相似的。但是,由于GCM是内置在操作系统的较低级别,我认为它比自定义解决方案更优化。
除非您有一些公司政策反对使用第三方服务器或一些非常具体的规范,否则我建议您使用GCM。我也鼓励大家观看C2DM的整个视频,以及GCM的这个视频。