ForegroundService 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 열거형은 멤버 값의 비트 조합을 지원합니다.
[System.Flags]
public enum ForegroundService
[<System.Flags>]
type ForegroundService =
- 상속
-
ForegroundService
- 특성
필드
| 속성 | 값 | Description |
|---|---|---|
| TypeManifest | -1 | 특수 값은 매니페스트 파일에 설정된 모든 형식을 사용했음을 나타냅니다.
에 대한 |
| TypeNone | 0 | 이 상수는 API 수준 34에서 더 이상 사용되지 않습니다. 사용하지 마세요. 매니페스트 파일에 설정되지 않은 경우 기본 포그라운드 서비스 유형입니다. API 수준 Build.VERSION_CODES 대상으로 하는 앱 UPSIDE_DOWN_CAKE 이상에서는 이 형식을 사용하지 않아야 합니다. 이 형식으로 Service.startForeground(int, android.app.Notification, int)를 호출하면 InvalidForegroundServiceTypeException이 발생합니다.
에 대한 |
| TypeDataSync | 1 | R.attr.foregroundServiceType 특성의 dataSync에 해당하는 상수입니다. 데이터(사진, 파일, 계정) 업로드/다운로드, 백업/복원, 가져오기/내보내기, 가져오기, 디바이스와 클라우드 간 네트워크를 통한 전송. 이 형식에는 Android 버전 Build.VERSION_CODES 시작하는 6시간의 시간 제한이 있습니다. VANILLA_ICE_CREAM. 이 유형의 포그라운드 서비스는 Service.stopSelf(), Context.stopService(android.content.Intent) 또는 해당 오버로드에 의해 시간 제한 내에서 중지되어야 합니다. Service.stopForeground(int)도 작동합니다. 그러면 서비스가 "백그라운드" 서비스로 강등되며 곧 시스템에서 중지됩니다. 제한 시간 내에 서비스가 중지되지 않으면 Service.onTimeout(int, int)이 호출됩니다. 또한 Build.VERSION_CODES 이전의 Android 버전에서 FOREGROUND_SERVICE_TYPE_DATA_SYNC 사용할 수 있더라도 주의하세요. VANILLA_ICE_CREAM Service.onTimeout(int, int)이 이러한 버전에 없으므로 호출되지 않습니다. 이 때문에 개발자는 이러한 버전에서 Service.onTimeout(int, int)이 호출되지 않은 경우에도 포그라운드 서비스를 중지해야 합니다.
에 대한 |
| TypeMediaPlayback | 2 | R.attr.foregroundServiceType 특성의 mediaPlayback에 해당하는 상수입니다. 음악, 비디오, 뉴스 또는 기타 미디어 재생. API 수준 Build.VERSION_CODES 대상으로 하는 앱에서 이 형식으로 포그라운드 서비스를 시작합니다. UPSIDE_DOWN_CAKE 이상에서는 사용 권한 Manifest.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK 필요합니다.
에 대한 |
| TypePhoneCall | 4 | R.attr.foregroundServiceType 특성의 phoneCall에 해당하는 상수입니다. 전화 통화, 화상 회의 또는 이와 유사한 대화형 통신과 관련된 지속적인 작업입니다. API 수준 Build.VERSION_CODES 대상으로 하는 앱에서 이 형식으로 포그라운드 서비스를 시작합니다. UPSIDE_DOWN_CAKE 이상에서는 권한 Manifest.permission.FOREGROUND_SERVICE_PHONE_CALL Manifest.permission.MANAGE_OWN_CALLS 또는 기본 전화 걸기 역할을 보유해야 합니다.
에 대한 |
| TypeLocation | 8 | R.attr.foregroundServiceType 특성의 위치에 해당하는 상수입니다. GPS, 지도, 탐색 위치 업데이트. API 수준 Build.VERSION_CODES 대상으로 하는 앱에서 이 형식으로 포그라운드 서비스를 시작합니다. UPSIDE_DOWN_CAKE 이상에서는 사용 권한 Manifest.permission.FOREGROUND_SERVICE_LOCATION 및 Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION 권한 중 하나가 필요합니다.
에 대한 |
| TypeConnectedDevice | 16 | R.attr.foregroundServiceType 특성의 connectedDevice에 해당하는 상수입니다. 자동, 블루투스, TV 또는 기타 장치 연결, 모니터링 및 상호 작용. API 수준 Build.VERSION_CODES 대상으로 하는 앱에서 이 형식으로 포그라운드 서비스를 시작합니다. UPSIDE_DOWN_CAKE 이상에서는 사용 권한 Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE 및 Manifest.permission.BLUETOOTH_ADVERTISE, Manifest.permission.BLUETOOTH_CONNECT, Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.CHANGE_NETWORK_STATE, Manifest.permission.CHANGE_WIFI_STATE, Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, Manifest.permission.NFC, Manifest.permission.TRANSMIT_IR 중 하나가 필요합니다. Manifest.permission.UWB_RANGING, Manifest.permission.RANGING 또는 연결된 USB 디바이스/액세서리 중 하나에 대한 액세스 권한이 부여되었습니다.
에 대한 |
| TypeMediaProjection | 32 | foregroundServiceType 특성의 mediaProjection에 해당하는 상수입니다. MediaProjection을 통해 캡처하려면 앱이 이 상수에 해당하는 형식으로 포그라운드 서비스를 시작해야 합니다. 이 형식은 MediaProjection에만 사용해야 합니다. createVirtualDisplay를 통해 화면 콘텐츠를 캡처하면 편리하게 녹화하고, 모임에 화면 콘텐츠를 표시하거나, 스크린샷을 찍거나, 다른 여러 시나리오를 만들 수 있습니다. API 수준 Build.VERSION_CODES 대상으로 하는 앱에서 이 형식으로 포그라운드 서비스를 시작합니다. UPSIDE_DOWN_CAKE 이상에서는 권한 Manifest.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION 필요하며 사용자는 이 앱에서 화면 캡처 요청을 허용해야 합니다.
에 대한 |
| TypeCamera | 64 | R.attr.foregroundServiceType 특성의 카메라에 해당하는 상수입니다. 카메라 디바이스를 사용하거나 비디오를 녹화합니다. targetSdkVersion Build.VERSION_CODES 있는 앱의 경우 R 이상에서는 매니페스트 및 Service.startForeground(int, android.app.Notification, int)에서 이 형식을 지정하지 않으면 포그라운드 서비스가 카메라에 액세스할 수 없습니다. API 수준 Build.VERSION_CODES 대상으로 하는 앱에서 이 형식으로 포그라운드 서비스를 시작합니다. UPSIDE_DOWN_CAKE 이상에서는 권한 Manifest.permission.FOREGROUND_SERVICE_CAMERA 및 Manifest.permission.CAMERA가 필요합니다.
에 대한 |
| TypeMicrophone | 128 | R.attr.foregroundServiceType 특성의 마이크에 해당하는 상수입니다. 마이크 디바이스를 사용하거나 오디오를 녹음합니다. targetSdkVersion Build.VERSION_CODES 있는 앱의 경우 R 이상에서는 매니페스트 및 Service.startForeground(int, android.app.Notification, int)에서 이 형식을 지정하지 않으면 포그라운드 서비스가 마이크에 액세스할 수 없습니다. API 수준 Build.VERSION_CODES 대상으로 하는 앱에서 이 형식으로 포그라운드 서비스를 시작합니다. UPSIDE_DOWN_CAKE 이상에서는 사용 권한 Manifest.permission.FOREGROUND_SERVICE_MICROPHONE 및 Manifest.permission.CAPTURE_AUDIO_OUTPUT, Manifest.permission.RECORD_AUDIO 권한 중 하나가 필요합니다.
에 대한 |
| TypeHealth | 256 | R.attr.foregroundServiceType 특성의 상태에 해당하는 상수입니다. 건강, 웰빙 및 피트니스. 호출자 앱은 Manifest.permission.FOREGROUND_SERVICE_HEALTH 권한과 Manifest.permission.ACTIVITY_RECOGNITION, Manifest.permission.HIGH_SAMPLING_RATE_SENSORS 권한 중 하나를 가져야 합니다. HealthPermissions.READ_HEART_RATE, HealthPermissions.READ_SKIN_TEMPERATURE, HealthPermissions.READ_OXYGEN_SATURATION, HealthPermissions.READ_BLOOD_PRESSURE, HealthPermissions.READ_HEART_RATE_VARIABILITY, HealthPermissions.READ_RESPIRATORY_RATE, HealthPermissions.READ_VO2_MAX, Manifest.permission.FOREGROUND_SERVICE_HEALTH 필요
에 대한 |
| TypeRemoteMessaging | 512 | R.attr.foregroundServiceType 특성의 remoteMessaging에 해당하는 상수입니다. 디바이스 간에 메시지를 릴레이하기 위해 로컬 서버를 호스트하는 메시징 사용 사례입니다. Manifest.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING 필요
에 대한 |
| TypeSystemExempted | 1024 | R.attr.foregroundServiceType 특성의 systemExempted에 해당하는 상수입니다. 시스템에서 포그라운드 서비스 사용 사례를 제외했습니다. 앱은 다음과 같은 경우에만 이 형식을 사용할 수 있습니다. 앱에는 UID < Process.FIRST_APPLICATION_UID 있습니다. 앱이 Doze 허용 목록에 있습니다. 디바이스가 데모 모드에서 실행되고 있습니다. 디바이스 소유자 앱; 프로필 소유자 앱; 영구 앱; 이동 통신 사업자 권한 앱; android.app.role.RoleManager#ROLE_EMERGENCY 역할이 있는 앱; 헤드리스 시스템 앱; 디바이스 관리자 앱; 활성 VPN 앱; Manifest.permission.SCHEDULE_EXACT_ALARM 또는 Manifest.permission.USE_EXACT_ALARM 권한이 있는 앱 Manifest.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED 필요
에 대한 |
| TypeShortService | 2048 | 매니페스트의 R.attr.foregroundServiceType 특성에 있는 shortService에 해당하는 "수명이 짧은" 서비스에 대한 포그라운드 서비스 유형입니다. 다른 포그라운드 서비스 유형과 달리 이 형식은 특정 사용 사례와 연결되지 않으며 특별한 권한(Manifest.permission.FOREGROUND_SERVICE 외에)이 필요하지 않습니다. 그러나 이 형식에는 다음과 같은 제한 사항이 있습니다. 형식의 시간 제한은 3분입니다. 이 유형의 포그라운드 서비스는 Service.stopSelf(), Context.stopService(android.content.Intent) 또는 해당 오버로드에 의해 시간 제한 내에서 중지되어야 합니다. Service.stopForeground(int)도 작동합니다. 그러면 서비스가 "백그라운드" 서비스로 강등되며 곧 시스템에서 중지됩니다. 제한 시간 내에 서비스가 중지되지 않으면 Service.onTimeout(int)이 호출됩니다. 시스템에서 이 콜백을 호출하더라도 서비스가 자동으로 중지되지는 않습니다. 이 콜백을 받을 때도 앞에서 언급한 방법 중 하나를 사용하여 서비스를 중지해야 합니다. 콜백 후에도 서비스가 중지되지 않으면 몇 초의 짧은 유예 기간 후에 앱이 ANR로 선언됩니다. 이 유형의 포그라운드 서비스는 "고정"할 수 없습니다(Service.START_STICKY 참조). 즉, 짧은 foregorund-service를 실행하는 동안 크래시 또는 메모리 부족으로 인해 앱이 종료되는 경우 시스템은 서비스를 다시 시작하지 않습니다. 다른 포그라운드 서비스는 짧은 포그라운드 서비스에서 시작할 수 없습니다. 다른 포그라운드 서비스 유형과 달리 앱이 "짧은" 포그라운드 서비스만 있는 상태에서 백그라운드에서 실행 중인 경우 여기에 설명된 제한 사항으로 인해 다른 포그라운드 서비스를 시작할 수 없습니다. 백그라운드에 대한 제한 사항이 시작됩니다. 여러 포그라운드 서비스 유형을 |s와 결합할 수 있으며 FOREGROUND_SERVICE_TYPE_SHORT_SERVICE 결합할 수 있습니다. 다른 형식도 함께 사용합니다. 그러나 FOREGROUND_SERVICE_TYPE_SHORT_SERVICE 사용할 다른 유효한 포그라운드 서비스가 없고 작업에 충분한 시간 제한이 있는 경우이며 다른 형식을 사용할 수 있는 경우에는 이 형식을 사용할 필요가 없습니다. 이러한 이유로 FOREGROUND_SERVICE_TYPE_SHORT_SERVICE 다른 포그라운드 서비스 유형과 결합된 경우 시스템은 이를 무시하므로 위의 제한 사항이 적용되지 않습니다(예: 시간 제한 없음). 또한 android 버전 Build.VERSION_CODES FOREGROUND_SERVICE_TYPE_SHORT_SERVICE 추가된 경우에도 주의하세요. UPSIDE_DOWN_CAKE 이전 Android 버전에서도 사용할 수 있습니다(다른 새로운 포그라운드 서비스 유형을 사용할 수 있는 것처럼). 그러나 이전 버전에는 Service.onTimeout(int)이 없으므로 이러한 버전에서는 호출되지 않습니다. 이 때문에 개발자는 이러한 버전에서 Service.onTimeout(int)이 호출되지 않은 경우에도 포그라운드 서비스를 중지해야 합니다.
에 대한 |
| TypeMediaProcessing | 8192 | R.attr.foregroundServiceType 특성의 mediaProcessing에 해당하는 상수입니다. 비디오 또는 사진 편집 및 처리와 같은 미디어 처리 사용 사례 이 형식의 시간 제한은 6시간입니다. 이 유형의 포그라운드 서비스는 Service.stopSelf(), Context.stopService(android.content.Intent) 또는 해당 오버로드에 의해 시간 제한 내에서 중지되어야 합니다. Service.stopForeground(int)도 작동합니다. 그러면 서비스가 "백그라운드" 서비스로 강등되며 곧 시스템에서 중지됩니다. 제한 시간 내에 서비스가 중지되지 않으면 Service.onTimeout(int, int)이 호출됩니다. 또한 android 버전 Build.VERSION_CODES FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING 추가된 경우에도 주의하세요. VANILLA_ICE_CREAM 이전 Android 버전에서도 사용할 수 있습니다(다른 새로운 포그라운드 서비스 유형을 사용할 수 있는 것처럼). 그러나 이전 버전에는 Service.onTimeout(int, int)이 없으므로 이러한 버전에서는 호출되지 않습니다. 이 때문에 개발자는 이러한 버전에서 Service.onTimeout(int, int)이 호출되지 않은 경우에도 포그라운드 서비스를 중지해야 합니다. Manifest.permission.FOREGROUND_SERVICE_MEDIA_PROCESSING 필요
에 대한 |
| TypeSpecialUse | 1073741824 | R.attr.foregroundServiceType 특성의 specialUse에 해당하는 상수입니다. 다른 포그라운드 서비스 유형으로 분류할 수 없지만 JobInfo.Builder API를 사용할 수 없는 사용 사례입니다. 이 포그라운드 서비스 유형의 사용이 제한될 수 있습니다. 또한 앱은 AndroidManifest.xml 서비스 수준 <속성을> 여기서 정확한 사용 사례에 대한 힌트로 선언해야 합니다.
Android의 향후 릴리스에서 위의 포그라운드 서비스 유형 foo가 플랫폼에서 지원되는 경우 이전 버전과의 호환성을 제공하기 위해 앱은 사용 권한> 섹션에서 android:maxSdkVersion 특성을 <지정하고 android:foregroundServiceType에 포그라운드 서비스 유형 foo를 추가할 수 있으므로 두 플랫폼 모두에 동일한 앱을 설치할 수 있습니다.
Manifest.permission.FOREGROUND_SERVICE_SPECIAL_USE 필요
에 대한 |