Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

一般的なネットワーク使用を最適化する

一般的に、ネットワーク トラフィックの量を減らすと、バッテリーの消耗を抑えることができます。 これまでのレッスンで説明したバッテリー最適化手法に加えて、汎用的な手法についても確認し、アプリに適用できないか検討することをおすすめします。

このレッスンでは、ネットワーク トラフィックを減らし、アプリによるバッテリー消費を抑える方法の概要について説明します。

データを圧縮する

ネットワーク接続経由で送受信するデータの量を減らすと、接続時間も短くなり、バッテリーを節約できます。次の操作を行えます。

  • GZIP 圧縮などの圧縮技術を使用して、データを圧縮します。
  • 簡潔なデータ プロトコルを使用します。たとえば、JSON と XML は人間にとって読みやすく、言語に関して柔軟性がありますが、Android プラットフォーム内ではシリアル化のコストが高く、帯域幅が重い形式です。Protocol BuffersFlatBuffers といったバイナリ シリアル化形式の方が、ネットワーク上のパケットサイズが小さく、エンコードやデコードが高速になります。アプリが定期的に大量のシリアル化データを転送する場合、このような形式の方が、デコード時間や転送サイズに関してメリットがあります。

ファイルをローカルにキャッシュする

キャッシュを使用することで、重複したデータのダウンロードを回避できます。フルサイズ画像などのオンデマンド ダウンロードを含め、静的リソースは常にキャッシュし、妥当な範囲で可能な限り長期的に保存するようにしてください。

たとえば、ユーザー開始型ネットワーク リクエストによって取得したデータを、画面のメイン コンテンツとして表示するネットワーク アプリの場合、この方法をおすすめします。ユーザーが初めてこの画面を開いたときは、スプラッシュ画面を表示するようにします。後続の読み込みでは、最後のネットワーク リクエストからキャッシュされたデータが最初に読み込まれます。ネットワーク リクエストが完了すると、画面に新しいデータが再読み込みされます。

キャッシュについては、動画をご覧ください。アプリ内にキャッシュ機能を実装する方法については、ファイルをローカルにキャッシュするをご覧ください。

プリフェッチするキャッシュのサイズを最適化する

ローカル ファイル システムのサイズと現在のネットワーク接続に基づいて、プリフェッチするキャッシュのサイズを最適化します。 Connectivity Manager を使用すると、どのタイプのネットワーク(Wi-Fi、LTE、HSPAP、EDGE、GPRS)がアクティブか判断し、プリフェッチ ルーチンを変更して、バッテリー消費を最小限に抑えることができます。

詳細については、接続タイプに基づいてダウンロード パターンを変更するをご覧ください。