バッテリー寿命を長期化するために最適化する

モバイル ユーザー エクスペリエンスにとって、最も重要な点はバッテリー寿命です。バッテリー切れになったデバイスは、まったく機能しなくなります。 そのため、できる限りバッテリーを長持ちさせるようなアプリにすることが重要です。

アプリの消費電力を抑えるには、次の 3 つの点が重要です。

  • アプリを「レイジー ファースト」にします。
  • プラットフォーム機能を利用して、アプリのバッテリー消費量を管理します。
  • ツールを使用して、アプリ内でバッテリーを大量に消費している部分を発見します。

レイジー ファースト

アプリをレイジー ファーストにすることで、バッテリーを大量に消費する処理を削減、最適化できます。レイジー ファースト デザインを実現するには、以下のような点について検討する必要があります。

  • 削減: アプリから取り除くことができる冗長処理はありませんか。たとえば、毎回無線通信をウェイクアップしてデータを再ダウンロードするのではなく、ダウンロードしたデータをキャッシュすることはできませんか。
  • 延期: アプリはそのアクションをすぐに実行する必要がありますか。たとえば、デバイスの充電が完了するのを待ってから、アプリがデータをクラウドにバックアップすることはできませんか。
  • 結合: デバイスを何度もアクティブ状態にするのではなく、一括で処理を実行することはできませんか。たとえば、数十個のアプリがそれぞれメッセージを送信するために別々の時間に毎回無線通信をオンにする必要がありますか?代わりに、無線通信が 1 回ウェイクアップしている間にメッセージを送信することはできませんか?

CPU や無線通信、画面を使用する際は、上記のような点について確認してください。レイジー ファースト デザインによって、このようなバッテリー消費を抑制できます。

Android プラットフォームには、このような効率対策を実現するために、バッテリー寿命を最大化するための機能が幅広く用意されています。

プラットフォーム機能

アプリのバッテリー消費量を最適化する方法として、Android プラットフォームには、大きく分けて 2 つのカテゴリが用意されています。第 1 に、アプリ内に実装できる数種の API が用意されています。各 API の詳細については、バックグラウンド処理のガイドをご覧ください。

第 2 に、このプラットフォームには、バッテリー寿命を節約するための内部メカニズムが用意されています。この内部メカニズムはプログラムで実装する API ではありませんが、アプリがこのメカニズムを正しく活用できるように注意する必要があります。詳細については、以下をご覧ください。

Android 9(API レベル 28)では、バッテリー セーバー モードがさまざまな点で改善されています。 適用される実際の制限については、各デバイス メーカーが決定します。たとえば、AOSP ビルドの場合、次の制限が適用されます。

  • システムは、アプリがアイドル状態になるのを待つのではなく、積極的にアプリをアプリ スタンバイ モードにします。
  • 対象 API レベルに関係なく、すべてのアプリに対してバックグラウンド実行制限が適用されます。
  • 画面がオフになると、位置情報サービスが無効化される場合があります。
  • バックグラウンド アプリは、ネットワークにアクセスできません。

デバイス固有の消費電力最適化の詳細については、電源管理に関する制限をご覧ください。

通常どおり、バッテリー セーバーがアクティブな状態でアプリをテストすることをおすすめします。デバイスの [設定] > [バッテリー セーバー] 画面で、バッテリー セーバーを手動でオンにできます。

ツール

上記のプラットフォーム機能を最大限に活用するため、プラットフォームに用意されているツールを使用することで、アプリの中で消費電力が最も多い部分を見つけることができます。最適化を成功させるには、ターゲットを発見することが大きな一歩となります。

バッテリー寿命を長期化するために最適化可能な領域を発見するための Android 用のツールとしては、[GPU レンダリングのプロファイル作成] ツールや Battery Historian ツールなどがあります。 このようなツールを活用して、レイジー ファースト原則を適用できる領域をターゲットにします。

参考リンク