- 문법:
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["camera" | "connectedDevice" | "dataSync" | "health" | "location" | "mediaPlayback" | "mediaProjection" | "microphone" | "phoneCall" | "remoteMessaging" | "shortService" | "specialUse" | "systemExempted"] 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
서브클래스)를 애플리케이션의 구성요소 중 하나로 선언합니다. 활동과 달리 서비스는 시각적 사용자 인터페이스가 없습니다. 서비스는 오래 실행되는 백그라운드 작업이나 다른 애플리케이션에서 호출할 수 있는 리치 커뮤니케이션 API를 구현하는 데 사용합니다.모든 서비스는 매니페스트 파일의
<service>
요소로 나타내야 합니다. 여기에 선언되지 않은 서비스는 시스템에 표시되지 않으며 실행되지 않습니다.참고: Android 8.0(API 수준 26) 및 이후 버전에서는 앱이 백그라운드에서 실행되는 동안 할 수 있는 작업에 시스템에서 제한을 둡니다. 자세한 내용은 백그라운드 실행 제한 및 백그라운드 위치 액세스 제한을 설명하는 가이드를 참고하세요.
- 속성:
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"
로 설정하면 이 서비스는 나머지 시스템에서 분리된 특수한 프로세스 아래에서 실행되고 자체적인 권한이 없습니다. Service 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()
호출자가 이 권한을 부여하지 않았을 경우 이 메서드는 작동하지 않고Intent
객체가 서비스에 전달되지 않습니다.이 속성을 설정하지 않은 경우
<application>
요소의permission
속성이 설정한 권한을 서비스에 적용합니다. 둘 중 어느 속성도 설정하지 않은 경우 서비스는 권한으로 보호되지 않습니다. android:process
- 서비스가 실행되는 프로세스의 이름입니다. 일반적으로 애플리케이션의 모든 구성요소는 애플리케이션용으로 만들어진 기본 프로세스에서 실행됩니다. 애플리케이션 패키지와 이름이 동일합니다.
<application>
요소의process
속성은 모든 구성요소에 다른 기본값을 설정할 수 있습니다. 하지만 구성요소는 자체process
속성을 사용해 이 기본값을 재정의할 수 있으므로 이 방법을 통해 애플리케이션을 여러 프로세스에 확산시킬 수 있습니다.이 속성에 할당된 이름이 콜론(
:
)으로 시작되면 필요에 따라 애플리케이션 전용의 새 프로세스가 만들어지고 이 프로세스에서 서비스가 실행됩니다.프로세스 이름이 소문자로 시작되면 서비스는 이 이름의 전역 프로세스에서 실행됩니다(권한이 있는 경우). 이를 통해 서로 다른 애플리케이션의 구성요소가 한 프로세스를 공유하여 리소스 사용량을 줄일 수 있습니다.
- 참고 항목:
<application>
<activity>
- 도입 수준:
- API 수준 1
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2024-08-22(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-08-22(UTC)"],[],[]]