- 구문:
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["connectedDevice" | "dataSync" | "location" | "mediaPlayback" | "mediaProjection" | "phoneCall"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </service>
- 포함된 위치:
<application>
- 포함 가능한 항목:
<intent-filter>
<meta-data>
- 설명:
- 서비스(
Service
하위 클래스)를 애플리케이션의 구성요소 중 하나로 선언합니다. Activity와 달리, 서비스는 시각적 사용자 인터페이스가 없습니다. 서비스는 오래 실행되는 백그라운드 작업이나 다른 애플리케이션에서 호출할 수 있는 리치 커뮤니케이션 API를 구현하는 데 사용합니다.모든 서비스는 매니페스트 파일의
<service>
요소로 나타내야 합니다. 여기에 선언되지 않은 서비스는 시스템에 표시되지 않으며 실행되지 않습니다. - 특성:
android:description
- 서비스를 사용자에게 설명하는 문자열입니다. 라벨은 사용자 인터페이스의 다른 문자열처럼 현지화할 수 있도록 문자열 리소스에 대한 참조로 설정해야 합니다.
android:directBootAware
서비스가 직접 부팅을 인식하는지 나타냅니다. 즉, 사용자가 기기를 잠금 해제하기 전에 실행할 수 있는지 여부를 의미합니다.
참고: 직접 부팅 시 애플리케이션의 서비스는 기기에서 보호하는 저장소에 저장된 데이터에만 액세스할 수 있습니다.
기본값은
"false"
입니다.android:enabled
- 시스템이 서비스를 인스턴스화할 수 있는지 여부를 나타냅니다. 이 값이
true
인 경우 가능하고 "false
"인 경우에는 불가능합니다. 기본값은 "true
"입니다.<application>
요소는 서비스를 비롯한 모든 애플리케이션 구성요소에 적용하는 자신의enabled
특성을 갖고 있습니다.<application>
및<service>
특성은 모두 시스템이 서비스를 인스턴스화할 수 있도록 "true
"(기본값)여야 합니다. 둘 중 하나라도 "false
"일 경우, 서비스는 비활성화되고 인스턴스화될 수 없습니다. android:exported
- 다른 애플리케이션의 구성요소가 서비스를 호출하거나 서비스와 상호작용할 수 있는지 여부를 나타냅니다. 호출이나 상호작용이 가능하면 "
true
"이고, 그렇지 않을 경우 "false
"입니다. 이 값이 "false
"이면 동일한 애플리케이션의 구성요소 또는 동일한 사용자 ID를 가지고 있는 애플리케이션만 서비스를 시작하거나 서비스에 바인딩할 수 있습니다.기본값은 서비스가 인텐트 필터를 포함하는지 여부에 따라 다릅니다. 필터가 없는 경우 정확한 클래스 이름을 지정해야 서비스를 호출할 수 있습니다. 이는 (타인이 클래스 이름을 모르므로) 서비스가 애플리케이션 내부 용도로만 고안되었음을 암시합니다. 그러므로 이 경우에 기본값은 "
false
"입니다. 반면에 필터가 한 개 이상 있는 경우 서비스가 외부 용도로 고안되었음을 암시하므로 기본값은 "true
"입니다.이 특성 외에도 서비스를 다른 애플리케이션에 노출되지 않도록 제한하는 방법이 있습니다. 서비스와 상호작용할 수 있는 외부 엔터티를 제한하는 권한을 사용할 수도 있습니다(
permission
특성을 참조하세요). android:foregroundServiceType
서비스가 특정 사용 사례를 만족하는 포그라운드 서비스임을 지정합니다. 예를 들어
"location"
라는 포그라운드 서비스 유형은 앱이 기기의 현재 위치를 가져올 수 있다는 것을 의미합니다. 일반적으로는 기기 위치와 관련된 사용자가 시작한 작업을 계속하기 위한 목적입니다.여러 개의 포그라운드 서비스 유형을 특정 서비스로 할당할 수 있습니다.
android:icon
- 서비스를 나타내는 아이콘입니다. 이 특성은 이미지 정의를 포함하는 드로어블 리소스에 대한 참조로 설정해야 합니다. 이 특성을 설정하지 않으면 애플리케이션에 전체적으로 지정된 아이콘이 대신 사용됩니다(
<application>
요소의icon
특성 참조).여기에 설정했거나
<application>
요소가 설정한 서비스 아이콘은 모든 서비스의 인텐트 필터에 대한 기본 아이콘입니다(<intent-filter>
요소의icon
특성 참조). android:isolatedProcess
- 이 값을 true로 설정하면 이 서비스는 나머지 시스템에서 분리된 특수한 프로세스 아래에서 실행되고 자체적인 권한이 없습니다. 서비스 API(바인드 및 시작)를 통해서만 서비스와 통신할 수 있습니다.
android:label
- 사용자에게 표시될 수 있는 서비스의 이름입니다. 이 특성을 설정하지 않으면 애플리케이션 전체에 대해 설정한 라벨이 대신 사용됩니다(
<application>
요소의label
특성 참조).여기에 설정했거나
<application>
요소가 설정한 서비스 라벨은 모든 서비스의 인텐트 필터에 대한 기본 라벨입니다(<intent-filter>
요소의label
특성 참조).라벨은 사용자 인터페이스의 다른 문자열처럼 현지화할 수 있도록 문자열 리소스에 대한 참조로 설정해야 합니다. 그러나 애플리케이션을 개발하는 동안 편의상 라벨을 원시 문자열로 설정할 수도 있습니다.
android:name
- 서비스를 구현하는
Service
하위 클래스의 이름입니다. 이 값은 정규화된 클래스 이름(예: "com.example.project.RoomService
")이어야 합니다. 그러나 요컨대 이름의 첫 문자가 마침표인 경우(예: ".RoomService
") 이는<manifest>
요소에 지정된 패키지 이름에 추가됩니다.애플리케이션을 게시하고 나면 (
android:exported="false"
를 설정하지 않은 경우) 이 이름을 변경해서는 안 됩니다.기본값은 없습니다. 이름을 지정해야 합니다.
android:permission
- 서비스를 시작하거나 서비스에 바인딩하기 위해 엔터티가 반드시 가져야 하는 권한의 이름입니다.
,startService()
또는bindService()
의 호출자가 이 권한을 부여하지 않았을 경우, 이 메서드는 작동하지 않고 인텐트 객체가 서비스에 전달되지 않습니다.stopService()
이 특성을 설정하지 않는 경우
<application>
요소의permission
특성이 설정한 권한을 서비스에 적용합니다. 둘 중 어느 특성도 설정하지 않은 경우 권한이 서비스를 보호하지 않습니다. android:process
- 서비스를 실행할 프로세스의 이름입니다. 일반적으로는 애플리케이션의 모든 구성요소가 해당 애플리케이션을 위해 생성된 기본 프로세스에서 실행됩니다. 이 프로세스는 애플리케이션 패키지와 이름이 동일합니다.
<application>
요소의process
특성은 모든 구성요소에 대해 서로 다른 기본값을 설정할 수 있습니다. 그러나 구성요소가 자체적인process
특성으로 기본값을 재정의하고 여러 프로세스에 애플리케이션을 분산하도록 허용할 수 있습니다.이 특성에 할당된 이름이 콜론(':')으로 시작되는 경우, 필요할 때 애플리케이션 전용 새 프로세스가 생성되며 이 서비스가 해당 프로세스에서 실행됩니다. 프로세스 이름이 소문자로 시작되는 경우, 해당 서비스는 그 이름을 가진 전역 프로세스에서 실행됩니다. 다만 그렇게 할 수 있는 권한이 있어야 합니다. 이렇게 하면 여러 애플리케이션의 구성요소가 프로세스 하나를 공유하므로 리소스 사용량이 감소합니다.
- 참고 항목:
<application>
<activity>
- 추가된 레벨:
- API 레벨 1
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2019-12-27 UTC.