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