フォアグラウンド サービスの変更

フォアグラウンド サービスのドキュメントでは、Android フォアグラウンド サービスの現在の動作について説明しています。このドキュメントでは、最新バージョンの Android をターゲットにしているかどうかにかかわらず、ほとんどのアプリに適用できるベスト プラクティスについて説明します。

このページでは、フォアグラウンド サービスに関する最近の重要な変更と、最新バージョンの Android プラットフォームをターゲットとしていないアプリへの影響について説明します。多くの場合、低い API レベルをターゲットとするアプリでは任意だったベスト プラクティスが、高い API レベルをターゲットとするアプリでは必須になります。

Android 16(API レベル 36)

以下の変更は、ターゲットとする API レベルに関係なく、Android 16 以降で動作するアプリに適用されます。

  • フォアグラウンド サービスから開始されたバックグラウンド ジョブは、それぞれのランタイム割り当てを遵守する必要があります。これには、JobScheduler で直接スケジュールされたジョブや、WorkManager や DownloadManager などの他のライブラリによって作成されたジョブが含まれます。

    ユーザー アクションに応じてデータを転送するには、ユーザーが開始するデータ転送ジョブの使用を検討してください。これらのジョブは、通常のジョブ割り当ての対象外です。

Android 15(API レベル 35)

API レベル 35 以降をターゲットとするアプリには、次の要件が適用されます。

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 以降をターゲットとするアプリには、次の要件が適用されます。

  • アプリのフォアグラウンド サービスで位置情報を使用する場合は、location サービスタイプを使用してサービスを宣言する必要があります。

Android 9(API レベル 28)

Android 9 では、FOREGROUND_SERVICE 権限が導入されています。Android 9 で動作し、フォアグラウンド サービスを使用するアプリには、この権限が必要です。

API レベル 28 以降をターゲットとするアプリが、FOREGROUND_SERVICE 権限をリクエストせずにフォアグラウンド サービスを作成しようとすると、システムは SecurityException をスローします。