フォアグラウンド サービスのドキュメントでは、Android フォアグラウンド サービスの現在の動作について説明しています。このドキュメントでは、最新バージョンの Android をターゲットにしているかどうかに関係なく、ほとんどのアプリのベスト プラクティスに関するガイダンスを提供します。
このページでは、フォアグラウンド サービスに対する最近の重要な変更と、最新バージョンの Android プラットフォームをターゲットにしていないアプリへの影響について説明します。多くの場合、低い API レベルをターゲットとするアプリでは任意だったベスト プラクティスが、高い API レベルをターゲットとするアプリでは必須になります。
Android 16(API レベル 36)
以下の変更は、ターゲットとする API レベルに関係なく、Android 16 以降で実行されるアプリに適用されます。
フォアグラウンド サービスから開始されたバックグラウンド ジョブは、それぞれのランタイム割り当てに従う必要があります。これには、
JobSchedulerで直接スケジュールされたジョブだけでなく、WorkManager やDownloadManagerなどの他のライブラリで作成されたジョブも含まれます。ユーザーの操作に応じてデータを転送するには、ユーザーが開始するデータ転送ジョブの使用を検討してください。これらのジョブは、通常のジョブ割り当ての対象外です。
Android 15(API レベル 35)
API レベル 35 以降をターゲットとするアプリには、以下の要件が適用されます。
dataSyncフォアグラウンド サービスの実行時間に関する新しい制限が追加されました。これらの制限については、フォアグラウンド サービスのタイムアウト動作をご覧ください。同様の制限が(Android 15 で新しく導入された)mediaProcessingフォアグラウンド サービス タイプにも適用されます。BOOT_COMPLETEDフォアグラウンド サービスは、特定のフォアグラウンド サービスを起動できなくなりました。SYSTEM_ALERT_WINDOW権限を保持するアプリがバックグラウンドからフォアグラウンド サービスを起動できるのは、現在表示されているオーバーレイ ウィンドウがある場合(または、バックグラウンド起動制限の除外のいずれかの条件を満たしている場合)のみです。以前は、これらのアプリに対する免除の範囲が広くなっていました。
Android 14(API レベル 34)
API レベル 34 以上をターゲットとするアプリには、以下の要件が適用されます。
- サービスタイプとともにすべてのフォアグラウンド サービスを申告する必要があります。
- アプリは、フォアグラウンド サービスが実行する作業の種類に適した権限タイプをリクエストする必要があります。各フォアグラウンド サービスのタイプには、対応する権限タイプがあります。たとえば、カメラを使用するフォアグラウンド サービスをアプリが起動する場合は、
FOREGROUND_SERVICE権限とFOREGROUND_SERVICE_CAMERA権限の両方をリクエストする必要があります。アプリが API レベル 34 以上をターゲットとしており、適切な特定の権限をリクエストしていない場合、システムはSecurityExceptionをスローします。
Android 12(API レベル 31)
API レベル 31 以降を対象とするアプリには、以下の要件が適用されます。
- アプリがバックグラウンドで動作しているときは、特定の例外を除いて、フォアグラウンド サービスを起動することはできません。詳しくは、またこのルールの例外については、バックグラウンドからフォアグラウンド サービスを開始する場合の制限をご覧ください。
Android 11(API レベル 30)
API レベル 30 以上をターゲットとするアプリには、次の要件が適用されます。
- アプリのフォアグラウンド サービスがカメラまたはマイクを使用する場合、アプリはそれぞれ
cameraまたはmicrophoneサービスタイプでサービスを宣言する必要があります。
Android 10(API レベル 29)
API レベル 29 以上をターゲットとするアプリには、次の要件が適用されます。
Android 9(API レベル 28)
Android 9 では、FOREGROUND_SERVICE 権限が導入されました。Android 9 で実行され、フォアグラウンド サービスを使用するアプリには、この権限が必要です。
API レベル 28 以上をターゲットとするアプリが、FOREGROUND_SERVICE 権限をリクエストせずにフォアグラウンド サービスの作成を試みると、システムは SecurityException をスローします。