Energy Profiler を使用してエネルギー使用量を検査する

Energy Profiler を利用すると、アプリが必要以上にエネルギーを消費している場所を発見できます。

Energy Profiler は、CPU やネットワーク無線、GPS センサーの使用状況をモニタリングして、各コンポーネントが使用しているエネルギー量を視覚的に表示します。また、Energy Profiler は、エネルギー消費に影響するシステム イベント(wake lock、アラーム、ジョブ、位置情報リクエスト)も表示します。

Energy Profiler は、エネルギー消費量を直接測定しません。そうではなく、デバイス上の各リソースのエネルギー消費量を推定するモデルを使用します。

Energy Profiler の概要

Android 8.0(API 26)以降を搭載したコネクテッド デバイスまたは Android Emulator 上でアプリを実行すると、[Profiler] ウィンドウ内の 1 つの行として Energy Profiler が表示されます。

Energy Profiler を開く手順は次のとおりです。

  1. [View] > [Tool Windows] > [Profiler] を選択するか、ツールバーの [Profile] をクリックします。

    [Select Deployment Target] ダイアログが表示されたら、プロファイリング用にアプリをデプロイするデバイスを選択します。USB 経由でデバイスを接続しているにもかかわらずデバイスがリストに表示されない場合は、USB デバッグが有効になっているかを確認します。

  2. [Energy] タイムラインの任意の場所をクリックすると、Energy Profiler が開きます。

Energy Profiler を開くと、アプリの推定エネルギー使用量がすぐに表示されます。図 1 のように画面に表示されます。

図 1.Energy Profiler のタイムライン

図 1 に示すように、Energy Profiler のデフォルト ビューには、次のようなタイムラインが表示されます。

  1. イベント タイムライン: アプリ内のアクティビティがそのライフサイクル内でさまざまな状態に遷移する様子を表示します。また、このタイムラインには、画面回転イベントなど、ユーザーによるデバイス操作も示されます。
  2. エネルギー タイムライン: アプリの推定エネルギー消費量を示します。
  3. システム タイムライン: エネルギー消費に影響するシステム イベントを示します。

CPU 別、ネットワーク別、地域(GPS)リソース別、関連システム イベント別のエネルギー使用量の内訳を表示するには、マウスポインタを [Energy] タイムラインのバーの上に置きます。

システム イベントを検査する: wake lock、ジョブ、アラーム

Energy Profiler を使用して、wake lock、ジョブ、アラームなど、エネルギー消費に影響するシステム イベントを発見できます。

  • wake lock とは、本来であればデバイスがスリープ状態になるはずの状況のときに CPU または画面をオンにするメカニズムです。たとえば、動画を再生するアプリの場合、wake lock を使用することで、ユーザーがデバイスを操作していないときでも画面をオンのままにすることができます。wake lock のリクエストはエネルギー消費量が多いわけではありませんが、wake lock の解除に失敗した場合、画面や CPU が必要以上にオン状態を長時間維持することになり、バッテリーの消耗が激しくなります。詳細については、wake lock の利用に関するガイドをご覧ください。

  • アラームを使用すると、アプリのコンテキスト外でバックグラウンド タスクを定期的に実行できます。アラームが発生すると、デバイスが復帰し、エネルギー消費量の多いコードが実行されます。詳細については、アラームの利用に関するガイドをご覧ください。

  • ジョブを使用すると、ネットワークが利用可能になったときなど、指定条件に基づいてアクションを実行できます。JobBuilder でジョブを作成し、JobScheduler でジョブのスケジュールを設定します。多くの場合、アラームまたは wake lock を使用せず、JobScheduler でジョブを使用することをおすすめします。

  • 位置情報リクエストでは、GPS センサーが使用されます。そのために、かなりの量のエネルギーが消費されることがあります。位置情報リクエストを効率的に利用する方法については、位置情報を最適化して電池の消耗を抑えるをご覧ください。

Energy Profiler を使用すると、アプリが各機能を使用している場所を簡単に見つけることができます。そのため、各機能の利用状況に関する確かな情報に基づいて判断を下すことができます。

Energy Profiler の [Energy] タイムラインの下に [System] タイムラインがあり、そこでは、システム イベントがアクティブになっている期間が、色付きのバーで表示されます。wake lock は赤色のバーで表示され、ジョブとアラームは黄色のバーで表示され、位置情報イベントは薄い紫色のバーで表示されます。

Energy Profiler と、解除されていない wake lock の原因となるソースコードを表示するコードエディタの例を図 2 に示します。

図 2. Energy Profiler を使用して wake lock を発見する

  1. [Energy] タイムライン内で期間を選択すると、[System Event] パネルが開き、wake lock などのイベントの詳細が表示されます。
  2. [System Event] パネルで特定の wake lock を選択すると、[Wake Lock Details] パネルが開き、その wake lock の詳細が表示されます。
  3. [Wake Lock Details] パネル内のコールスタック上部にある呼び出しメソッドのエントリをダブルクリックすると、コードエディタが開き、wake lock のソースコードにジャンプできます。
  4. wake lock を取得する呼び出しが、ソースエディタ内でハイライト表示されます。

他のシステム イベントも、詳細情報を表示する手順は、wake lock の場合と基本的に同じです。その際、詳細情報パネルには、イベントタイプごとに固有の情報が表示されます。たとえば、[Job Details] パネルには、ジョブのスケジュールを設定しているコードブロックと、ジョブを終了するコードブロックのコールスタックが表示されます。