バッテリー リソース運用

Android 13(API レベル 33)では、以下のバッテリー維持対策を導入しています。

アプリが「制限付き」のアプリ スタンバイ バケットに入れられるタイミングの更新

アプリが除外の対象となる場合を除き、アプリで次のいずれかの動作が発生すると、システムはアプリを制限付きのバケットに入れます。

  • ユーザーが 8 日間アプリを操作しなかった。アプリのサービスにバインドする別のアプリをユーザーが操作した場合、システムはアプリが「使用された」と見なします。

  • アプリが 24 時間以内にブロードキャストまたはバインディングを過度に呼び出した。

  • (対応デバイスのみ)アプリがバックグラウンドで 24 時間以内にデバイスのバッテリーを大量に消費した。このしきい値はデバイスに依存します。特に低 RAM デバイスではしきい値が異なる場合があります。

    システムは、アプリがデバイスのバッテリー寿命に及ぼす影響を測定する際に、アプリがさまざまな場所で行う次のような処理を考慮します。

    • ジョブ(優先ジョブを含む)
    • ブロードキャスト レシーバ
    • バックグラウンド サービス
    • システムがアプリのプロセスをキャッシュに保存したかどうか

ユーザーの操作によりアプリを「制限付き」のバケットから出すことができる

ユーザーが次のような方法でアプリを操作した場合、システムはアプリを制限付きのバケットから取り出して別のアプリ スタンバイ バケットに入れます。

  • ユーザーがアプリから送信された通知をタップした。

  • ユーザーがアプリに属するウィジェットでアクションを実行した。

  • ユーザーがメディアボタンを押してアプリのフォアグラウンド サービスに影響を与えた。

  • ユーザーが Android Automotive OS の操作中にアプリに接続し、アプリでフォアグラウンド サービスまたは CONNECTION_TYPE_PROJECTION のいずれかが使用された。

  • アプリがピクチャー イン ピクチャー(PiP)モードで表示された。

  • アプリが画面上でアクティブなアプリの一つになった(これは、主として大画面デバイスに適用されます)。

バックグラウンドの制限付きバッテリー使用量に関する新しい制限

Android の既存のバージョンには、アプリがバックグラウンドで動作しているときに実行できる作業量をユーザーが調整できる機能があります。システム設定の [バッテリー使用量] ページには、次のオプションが表示されます。

  • 制限なし: バックグラウンド処理を許可し、バックグラウンドのバッテリー消費量の増加を許容します。
  • 最適化(デフォルト): ユーザーによるアプリの操作方法に基づいて、アプリがバックグラウンド処理を行う能力を最適化します。
  • 制限付き: アプリがさまざまな処理を実行できることよりも、デバイスのバッテリー寿命を優先します。アプリがバックグラウンドで実行できる処理に対して、より大きな制限が加えられます。

Android 9(API レベル 28)以降、「制限付き」状態に設定されたアプリは以下の制限を受けます。

  • フォアグラウンド サービスを起動できない
  • 既存のフォアグラウンド サービスがフォアグラウンドから削除される
  • アラームがトリガーされない
  • ジョブが実行されない

アプリが Android 13 をターゲットとしている場合、他の理由でアプリが開始されるまで、システムは以下のブロードキャストを配信しません。

  • BOOT_COMPLETED
  • LOCKED_BOOT_COMPLETED

長時間実行されているフォアグラウンド サービスに対するシステム通知

アプリが長時間(24 時間以内に少なくとも 20 時間)フォアグラウンド サービスを実行していることを検出すると、システムはユーザーに通知を送信して、フォアグラウンド サービス(FGS)タスク マネージャーの操作を促します。通知には次のテキストが表示されます。

APP is running in the background for a long time. Tap to review.

次のいずれかの条件が満たされている場合、この通知は表示されません。

さらに、タイプが FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK または FOREGROUND_SERVICE_TYPE_LOCATION のフォアグラウンド サービスをアプリが 24 時間以内に 4 時間を超えて実行している場合、システムはアプリが開始するすべてのフォアグラウンド サービスに対して長時間実行の通知を送信しません。

除外

以下のアプリは、Android 13 で導入されたバッテリー維持対策の適用対象から除外されます。

以下の状況では、アプリは「制限付き」のアプリ スタンバイ バケットに入れられる対象から除外され、8 日間操作されなかった場合のトリガーをバイパスできます。

以下の状況では、アプリは Android 13 で導入されたほとんどのバッテリー維持対策の適用対象から除外されますが、長時間実行されているフォアグラウンド サービスに対する通知の送信は妨げられません。

テスト

以下のセクションでは、Android 13 で導入されたバッテリー維持対策がアプリに及ぼす影響をテストする方法をいくつか紹介します。

バックグラウンドでの使用を妨げる

アプリをバックグラウンドで実行できないようにするには、ターミナル ウィンドウで次のコマンドを実行します。

adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND deny

アプリを制限付きのバケットに入れる

アプリを強制的に制限付きバケットに入れるには、ターミナル ウィンドウで次のコマンドを実行します。

adb shell am set-standby-bucket PACKAGE_NAME restricted