포그라운드 서비스 문서에서는 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
를 발생시킵니다.