フォアグラウンド サービスのドキュメントでは、Android フォアグラウンド サービスの現在の動作について説明しています。このドキュメントでは、最新バージョンの Android をターゲットとしているかどうかにかかわらず、ほとんどのアプリのベスト プラクティスについて説明します。
このページでは、フォアグラウンド サービスの最近の重要な変更と、最新バージョンの Android プラットフォームをターゲットとしていないアプリへの影響について説明します。多くの場合、低い API レベルをターゲットとするアプリでは任意だったベスト プラクティスが、高い API レベルをターゲットとするアプリでは必須になります。
Android 9(API レベル 28)
Android 9 では、FOREGROUND_SERVICE
権限が導入されています。Android 9 で実行され、フォアグラウンド サービスを使用するアプリには、その権限が必要です。
API レベル 28 以降をターゲットとするアプリが、FOREGROUND_SERVICE
権限をリクエストせずにフォアグラウンド サービスを作成しようとすると、システムは SecurityException
をスローします。
Android 10(API レベル 29)
API レベル 29 以降をターゲットとするアプリには、次の要件が適用されます。
Android 11(API レベル 30)
API レベル 30 以降をターゲットとするアプリには、次の要件が適用されます。
- アプリのフォアグラウンド サービスがカメラまたはマイクを利用する場合は、それぞれ
camera
サービスタイプまたはmicrophone
サービスタイプでサービスを宣言する必要があります。
Android 12(API レベル 31)
API レベル 31 以降をターゲットとするアプリには、次の要件が適用されます。
- アプリがバックグラウンドで動作しているときにフォアグラウンド サービスを起動することは許可されません(いくつかの例外を除く)。詳しくは、このルールの例外についての記事「バックグラウンドからフォアグラウンド サービスを開始する場合の制限」をご覧ください。
Android 14(API レベル 34)
API レベル 34 以降をターゲットとするアプリには、次の要件が適用されます。
- サービスタイプとともにすべてのフォアグラウンド サービスを申告する必要があります。
- アプリは、フォアグラウンド サービスが行う作業の種類に適した権限タイプをリクエストする必要があります。各フォアグラウンド サービスのタイプには、対応する権限タイプがあります。たとえば、アプリがカメラを使用するフォアグラウンド サービスを起動する場合は、
FOREGROUND_SERVICE
権限とFOREGROUND_SERVICE_CAMERA
権限の両方をリクエストする必要があります。API レベル 34 以降をターゲットとするアプリで、適切な特定の権限をリクエストしていない場合、システムはSecurityException
をスローします。
Android 15(API レベル 35)
API レベル 35 以降をターゲットとするアプリには、以下の要件が適用されます。
dataSync
フォアグラウンド サービスの実行時間に新しい制限が設けられました。これらの制限については、フォアグラウンド サービスのタイムアウト動作をご覧ください。同様の制限が、(Android 15 の新機能)mediaProcessing
フォアグラウンド サービス タイプにも適用されます。BOOT_COMPLETED
フォアグラウンド サービスは、特定のフォアグラウンド サービスを起動できなくなりました。SYSTEM_ALERT_WINDOW
権限を持つアプリは、現在表示されているオーバーレイ ウィンドウがある場合(または、バックグラウンドでの開始制限の除外のいずれかを満たしている場合)にのみ、バックグラウンドからフォアグラウンド サービスを起動できます。これまで、これらのアプリの免除はより広範囲でした。