バックグラウンド処理は、応答性が高く、効率的で、ユーザーのデバイスで適切に動作する最新の Android アプリを構築するうえで重要な要素です。バックグラウンド処理には、アプリがフォアグラウンドに表示されていないときに実行する必要があるタスク(サーバーからのデータの取得や画像の処理など)が含まれます。

バックグラウンド実行の複雑さを理解することは、すべてのデバイスで適切に動作する復元力のあるアプリを構築するうえで重要です。

バックグラウンド処理を使ってみる

ユースケースに適したバックグラウンド処理 API の選択に関するガイドを確認し、Android のプロセスとアプリのライフサイクルのコンテキストで検討します。
ガイド
適切なバックグラウンド処理 API を選択するのは難しい場合があります。このページでは、非同期処理、WorkManager、フォアグラウンド サービス、または代替手段をいつ使用すべきかについて明確なガイダンスを提供します。特定のユースケースに最適な API を確認します。
ガイド
Android プロセスのライフサイクルの基本的なコンセプトと、それがアプリの動作とリソース管理にどのように影響するかについて説明します。システムがアクティビティの状態に基づいてアプリのプロセスを管理する方法について説明します。これにより、システムが開始した終了に適切に対応する、復元力と効率性に優れたアプリケーションを設計できます。

基本的なコンセプト

バックグラウンドで処理を実行するための一般的な API とツールには、WorkManager、フォアグラウンド サービス、アラーム、ブロードキャストなどがあります。各ソリューションは、ユーザーのデバイスのバッテリー駆動時間にさまざまな影響を与えます。
WorkManager は、Android で永続的なバックグラウンド処理を行うための推奨ソリューションです。この強力なライブラリを使用して、アプリの再起動やデバイスの再起動後も持続するタスクをスケジュールする方法と、制約と柔軟な再試行ポリシーを処理するための主な機能について学びます。
フォアグラウンド サービスは、中断すべきでないタスクをすぐに実行する強力な方法を提供します。永続通知を使用してフォアグラウンド サービスを宣言、起動、停止するタイミングと方法について説明します。これにより、アプリはシステムによって終了されることなく重要なタスクを実行できます。
アラームは、時間ベースの作業をスケジュール設定するための重要なツールです。このページでは、アプリが実行されていない場合でも、特定の時刻または特定の期間内に実行する必要があるタスクに対して、正確なアラームと不正確なアラームの両方をスケジュール設定するために AlarmManager を使用する方法について説明します。また、アラームを管理し、バッテリー寿命を最適化するためのベスト プラクティスについても説明します。
ブロードキャストを送受信して、システム イベントや他のアプリからのメッセージを処理する方法について説明します。また、コンテキスト登録型とマニフェスト宣言型のレシーバ、およびそれらに適用される最新のシステム制限についても学習します。

ユースケース別の背景ガイダンス

適切なソリューションはユースケースによって異なります。Android には、特定のシナリオ向けに最適化されたタスク固有の API が多数用意されています。これらの API を使用すると、WorkManager やフォアグラウンド サービスを使用する場合よりも、消費電力を大幅に削減でき、制限も少なくなることがよくあります。

このセクションでは、一般的なユースケースと推奨されるソリューションをいくつか紹介します。

ほとんどのユースケースでは、ユーザーがアプリを使用しているときにのみ位置情報が必要になります。ただし、アプリがバックグラウンドで位置情報にアクセスする必要がある場合は、Fused Location Provider API を使用します。この API を利用して、キャッシュに保存された直近の位置情報を取得したり、定期的な位置情報の更新をリクエストしたりします。
アプリがバックグラウンドにあるときに、更新メソッドを使用して GlanceAppWidget を効率的に更新します。
Bluetooth Low Energy(BLE)を使用して、周辺機器とバックグラウンドで通信します。システムレベルの制限を尊重し、バッテリーを節約しながら、デバイスをスキャン、接続し、永続的な接続を維持する方法を学びます。
モバイル デバイスで歩数をトラッキングする場合は、健康とフィットネスのデータ用の Android データストアであるヘルスコネクトから歩数を読み取ることを検討してください。
データ転送(ダウンロードやアップロードなど)を伴い、ユーザーに進行状況を知らせることを目的とした、ユーザーが開始するバックグラウンド タスクには、User-Initiated-Data Transfer ジョブタイプを使用します。このジョブタイプは、長時間実行されるデータ転送に最適化されており、システムによって優先度が付与されます。
Media3 ライブラリを使用して、アプリがユーザーに表示されていない間のバックグラウンド再生をサポートします。

電力の最適化について

高品質の Android アプリを作成するには、バックグラウンド作業が電力に与える影響を考慮することが重要です。システムがリソースを管理する方法を理解することで、より復元力があり、バッテリー効率の高いアプリを構築できます。電力を最適化すると、バッテリーの消耗を抑え、システムによるアプリの終了を防ぎ、スムーズなユーザー エクスペリエンスを実現できます。
ガイド

システムは、デバイスの状態、アプリの状態、アプリのスタンバイ バケットに基づいて、リソースに対するアプリのリクエストを優先順位付けします。

アプリがデバイスの電源管理リソースの制限内で動作し、バックグラウンドで確実にタスクを実行する方法について学びます。

ガイド
アプリでは、重要な処理を完了するために、デバイスの CPU が一時停止状態にならないようにする必要がある場合があります。このガイドは、デバイスをスリープ状態にしないための最適な方法を選択する際に役立ちます。
ガイド
Doze モードとアプリ スタンバイ モードに合わせてアプリを調整し、バッテリー効率を改善してユーザー エクスペリエンスを向上させる方法について説明します。これらの省電力モードを理解することで、デバイスのバッテリー寿命への影響を最小限に抑えながら、アプリを最適に実行できます。
ガイド
Android 9 以降では、すべてのアプリに影響する電源管理機能がデバイスに搭載されています。バッテリー セーバー、アプリ スタンバイ バケット、バックグラウンド制限などの機能を含め、すべてのデバイスでアプリが適切に動作することを確認するためのテスト方法について説明します。

最新情報