- 語法:
<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"
時,只有 同一個應用程式或應用程式的元件 可以啟動或繫結至該服務。預設值取決於服務是否包含意圖篩選器。沒有任何篩選器時,代表只有在指定確切的類別名稱後,才能叫用服務。這表示服務僅適用於 應用程式內部使用,因為其他應用程式不知道該類別名稱。因此,在 在本例中,預設值為
"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
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2024-08-22 (世界標準時間)。
[[["容易理解","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 (世界標準時間)。"],[],[]]