信頼できる電源をいつでも使用できるとは限りません。停電によって予定どおりに充電できない場合もあります。ユーザーのバッテリーが無駄に消費されないようにするには、バッテリー使用量についてベンチマーク テストを行い、ウェイクロックの回避、タスクのスケジュール、センサー リクエストのモニタリングをします。
バッテリー消費量の低減
必要な場合にのみアプリがバッテリーを使い、必要以上に電力を消費しないようにするには次のような方法があります。
- アプリがバックグラウンドで実行中で、デバイスがバッテリー電源で動作しているときは、アプリのアクティビティを最小限にする必要があります。
- GPS センサーなどのセンサーは、バッテリーを大幅に消耗することがあります。問題を回避するため、
FusedLocationProvider
API を使用して、元となる位置情報テクノロジーを管理します。高精度や低電力といった大枠の要件を指定できるシンプルな API を提供します。また、位置情報をキャッシュして、アプリ間でリクエストを一括処理することで、デバイスのバッテリー使用を最適化します。位置情報をリクエストする理想的な方法については、直近の位置情報の取得のトレーニング ガイドをご覧ください。 - wake lock は、デバイスがバックグラウンド アクティビティを実行できるよう、スリープ状態に入らないようにするためのメカニズムです。デバイスが省電力状態に移行できなくなるので、wake lock は使用しないでください。
- デバイスの復帰の回数を減らすには、ネットワーク アクティビティを一括で処理します。一括処理の詳細については、ダウンロードを最適化してネットワーク アクセスを効率化する方法に関する Android トレーニングをご覧ください。
- WorkManager は、タスクをスケジュール設定し、システムが一括処理を実行できるようにします。これにより、ネットワーク接続の待機、デバイスの充電状態、再試行、バックオフなどの一般的なパターンの実装が大幅に簡素化されます。デバイスが充電中で定額制ネットワークに接続されている場合、WorkManager を使用して必須ではないバックグラウンド アクティビティを実行します。
- ネットワーク アクティビティとバッテリーの消費についての詳細と対応方法については、ネットワークに起因するバッテリー消費を削減するをご覧ください。
バッテリー使用量のベンチマーク
制御された環境でアプリのバッテリー消費量のベンチマーク テストを行うと、アプリ内でバッテリーを大量に消費するタスクを確認できます。アプリのバッテリー消費量のベンチマーク テストは、バッテリーの使用効率を測定し、時間に伴う変化を追跡するためのものです。 Batterystats がアプリに関するバッテリー データを収集し、 Battery Historian がそのデータを HTML 表示に変換します。
バッテリー使用量の低減について詳しくは、バッテリー寿命の最適化に関する Android トレーニングをご覧ください。
関連情報

Article
接続のステータスと種類をモニタリングする
ConnectivityManager では、 次の条件に基づいて、デバイスがネットワークに接続することをリクエストできる API デバイスの機能やデータ転送のオプションなど、さまざまな条件に従った調整が行われます。 コールバックの実装は、デバイスの認証情報に関する情報をアプリに提供し、 現在の接続ステータスと機能に関連する 接続しますこの API を使用すると、デバイスが現在動作しているかどうかを アプリの要件を満たすネットワークに接続されている ネットワークのトランスポート

Article
コンテンツ プロバイダ
コンテンツ プロバイダは、構造化されたデータセットへのアクセスを管理します。データをカプセル化し、データ セキュリティを定義するメカニズムを提供します。コンテンツ プロバイダは、あるプロセスのデータと別のプロセスで実行されているコードを接続するための標準的なインターフェースです。