Android アプリと外部サーバーの間でオープンな双方向通信チャネルを維持する必要があります。これには GCM を使用できることはわかっていますが、Android 自体には関係のないさまざまな理由から、可能であれば websockets を使用したいと考えています。
AndroidでGCMを使用する場合とJavaベースのWebソケットクライアントを使用する場合のリソース/バッテリー使用統計の比較を教えてもらえますか?
前もって感謝します。
Android アプリと外部サーバーの間でオープンな双方向通信チャネルを維持する必要があります。これには GCM を使用できることはわかっていますが、Android 自体には関係のないさまざまな理由から、可能であれば websockets を使用したいと考えています。
AndroidでGCMを使用する場合とJavaベースのWebソケットクライアントを使用する場合のリソース/バッテリー使用統計の比較を教えてもらえますか?
前もって感謝します。
複数のアプリケーションが Google クラウドへの単一のソケット接続を使用する GCM を使用するため、アプリケーションが通知に GCM を使用するようにしても、既存の接続を使用するだけなので、バッテリーの寿命にはまったく影響しません。一方、Websocket を使用して作成するプロセスが何であれ、そのバッテリー使用量は GCM の上に追加されます。
また、アプリケーションがフォアグラウンドにない場合でも接続を維持する必要がある場合は、アプリケーションをフォアグラウンド サービスとして作成する必要があります。GCM がこれを処理します。
更新
gmail などの多くの重要なアプリケーションが GCM を使用するため、GCM を使用するアプリケーションが他にないデバイスは非常にまれなケースです。GCM のバッテリー使用量の正確な数値はわかりません。しかし、C2DM (同じ基礎となる通信モデルを使用する GCM の前身) のバッテリー使用量は、このビデオの約 4 分で言及されています。外部サーバーへの持続的ソケット接続 ( Android 持続的ソケット) のバッテリー使用量について、実際に同様の質問がありました。接続規則)。これは websocket ではありませんが、バッテリーの使用量は似ていると思います。しかし、GCM は OS のはるかに低いレベルに組み込まれているため、カスタム ソリューションよりも最適化されていると思います。
サードパーティのサーバーの使用を禁止する会社の方針や、非常に具体的な仕様がない限り、GCM の使用をお勧めします。また、C2DM に関するビデオ全体と、GCM に関するこのビデオもご覧になることをお勧めします。