Network Profiler を使用してネットワーク トラフィックを検査する

Network Profiler のタイムラインには、リアルタイムのネットワーク アクティビティが表示され、送受信されたデータに加えて、現在の接続数が示されます。 これらのデータを活用して、アプリがデータを転送した方法とタイミングを調べ、基盤となるコードを適切に最適化できます。

Network Profiler を開くには、次の手順を実行します。

  1. [View] > [Tool Windows] > [Android Profiler] をクリックします(ツールバーの [Android Profiler] をクリックすることもできます)。
  2. Android Profiler のツールバーからプロファイリングする端末とアプリプロセスを選択します。 USB 経由で端末に接続しているが、端末がリストに表示されない場合は、USB デバッグを有効にしていることを確認します。
  3. [NETWORK] タイムラインの任意の場所をクリックして Network Profiler を開きます。

アプリのネットワーク アクティビティをプロファイリングする必要がある理由

アプリがネットワークにリクエストを送信すると、端末は、電力を消費するモバイルまたは WiFi 無線通信を使用してパケットを送受信する必要があります。 無線通信ではデータの転送に電力を消費するだけでなく、無線通信をオンにして常時有効にするために電力を余分に使います。

Network Profiler を使用すると、ネットワーク アクティビティで頻発している短いスパイクを見つけることができます。こうしたスパイクでは、集中的に発生した多くの短いリクエストを処理するために、アプリが無線通信を頻繁にオンにしたり、長時間にわたって有効にすることを要求しています。 このパターンは、ネットワーク リクエストを一括処理することにより、アプリを最適化して電池のパフォーマンスを改善できる可能性があることを示しています。その結果として、データの送受信のために無線通信をオンにする回数を減らすことができます。 さらには、無線通信を省電力モードに切り替えて、一括処理されたリクエスト間の間隔を長くすることで、電池を節約できます。

アプリのネットワーク アクティビティを最適化するテクニックの詳細については、ネットワークによるバッテリー消費の防止をご覧ください。

Network Profiler の概要

ウィンドウの上部にイベント タイムラインと 1 無線通信の電力状態(HIGH / LOW)および Wi-Fi の状態が表示されます。 このタイムラインを 2 クリックしてドラッグし、その一部を選択してから、トラフィックを検査することができます。 3 タイムラインの下のウィンドウには、タイムラインの選択した部分で送受信されたファイルがファイル名、サイズ、タイプ、ステータス、日時とともに表示されます。 いずれかの列の見出しをクリックして、このリストを並べ替えることができます。 また、タイムラインの選択した部分の詳細な内訳が表示され、各ファイルが送受信されたタイミングが示されます。

接続の名前をクリックすると、選択した送受信済みのファイルに関する詳細 4 が表示されます。 タブをクリックして、レスポンス データ、ヘッダー情報、またはコールスタックを表示します。

図 1. Network Profiler ウィンドウ

注: 詳細なプロファイリングを有効にしてから、検査するタイムラインの部分を選択したり、送受信されたファイルのリストを表示したり、選択した送受信済みのファイルに関する詳細を表示したりする必要があります。 詳細なプロファイリングを有効にするには、詳細なプロファイリングを有効にするをご覧ください。

ネットワーク接続のトラブルシューティング

Network Profiler がトラフィックの値を検出したが、サポート対象のネットワーク リクエストを特定できない場合は、次のエラー メッセージが表示されます。

Network Profiling Data Unavailable: There is no information for the network traffic you've selected.」

現在、Network Profiler では、ネットワーク接続向けに HttpURLConnection ライブラリと OkHttp ライブラリのみがサポートされています。 アプリが別のネットワーク接続ライブラリを使用している場合、Network Profiler でネットワーク アクティビティを表示できないことがあります。 このエラー メッセージを受信したにもかかわらず、アプリで HttpURLConnection または OkHttp を使用していない場合は、バグを報告するか、Issue Tracker を検索して、この問題に関連する既存のレポートにフィードバックを追加してください。 また、これらのリソースを使用して、追加のライブラリのサポートをリクエストすることもできます。