1. 程式人生 > >Android官方文件—APP清單()17

Android官方文件—APP清單()17

<service>

語法:

    <service android:enabled=["true" | "false"]
             android:exported=["true" | "false"]
             android:icon="drawable resource"
             android:isolatedProcess=["true" | "false"]
             android:label="string resource"
             android:name="string"
             android:permission="string"
             android:process="string" >
        . . .
    </service>

包含於:

可以包含:

說明:

宣告服務(服務子類)作為應用程式的元件之一。與活動不同,服務缺乏視覺化使用者介面。它們用於實現長時間執行的後臺操作或可由其他應用程式呼叫的豐富通訊API。

所有服務必須由清單檔案中的<service>元素表示。任何未在此處宣告的內容都不會被系統看到,也永遠不會被執行。

屬性:

android:enabled

服務是否可以由系統例項化 - 如果可以,則為“true”,否則為“false”。預設值是true”。

<application>元素具有自己的enabled屬性,該屬性適用於所有應用程式元件,包括服務。對於要啟用的服務,<application>和<service>屬性必須都為“true”(因為它們都是預設值)。如果其中任何一個為“假”,則禁用該服務;它無法例項化。

android:exported

其他應用程式的元件是否可以呼叫服務或與之互動 - 如果可以,則為“true”,否則為“false”。當值為“false”時,只有相同應用程式的元件或具有相同使用者ID的應用程式才能啟動服務或繫結到該服務。

預設值取決於服務是否包含意圖過濾器。缺少任何過濾器意味著只能通過指定其確切的類名來呼叫它。這意味著該服務僅供應用程式內部使用(因為其他人不知道類名)。所以在這種情況下,預設值為“false”。另一方面,至少一個過濾器的存在意味著該服務旨在供外部使用,因此預設值為“true”。

此屬性不是限制服務暴露給其他應用程式的唯一方法。您還可以使用許可權來限制可以與服務互動的外部實體(請參閱許可權屬性)。

android:icon

代表服務的圖示。必須將此屬性設定為對包含影象定義的可繪製資源的引用。如果未設定,則使用為整個應用程式指定的圖示(請參閱<application>元素的圖示屬性)。

服務的圖示 - 無論是在此處設定還是由<application>元素設定 - 也是所有服務的intent過濾器的預設圖示(請參閱<intent-filter>元素的圖示屬性)。

android:isolatedProcess

如果設定為true,則此服務將在與系統其餘部分隔離的特殊程序下執行,並且沒有自己的許可權。與它的唯一通訊是通過Service API(繫結和啟動)。

android:label

可以向用戶顯示的服務的名稱。如果未設定此屬性,則使用整個應用程式的標籤集(請參閱<application>元素的label屬性)。

服務的標籤 - 無論是在此處設定還是由<application>元素設定 - 也是所有服務的intent過濾器的預設標籤(請參閱<intent-filter>元素的label屬性)。

應將標籤設定為對字串資源的引用,以便它可以像使用者介面中的其他字串一樣進行本地化。但是,為了方便您開發應用程式,它也可以設定為原始字串。

android:name

實現服務的Service子類的名稱。這應該是一個完全限定的類名(例如“com.example.project.RoomService”)。但是,作為簡寫,如果名稱的第一個字元是句點(例如“.RoomService”),則它將附加到<manifest>元素中指定的包名稱。

釋出應用程式後,不應更改此名稱(除非您已設定android:exported =“false”)。

沒有預設值。必須指定名稱。

android:permission

實體必須具有的許可權的名稱才能啟動服務或繫結到該服務。如果startService(),bindService()或stopService()的呼叫者未被授予此許可權,則該方法將不起作用,並且Intent物件將不會傳遞給該服務。

如果未設定此屬性,則<application>元素的許可權屬性設定的許可權適用於該服務。如果兩個屬性均未設定,則該服務不受許可權保護。

有關許可權的更多資訊,請參閱簡介中的“許可權”部分和單獨的文件“安全性和許可權”

android:process

要執行服務的程序的名稱。通常,應用程式的所有元件都在為應用程式建立的預設程序中執行。它與應用程式包的名稱相同。 <application>元素的process屬性可以為所有元件設定不同的預設值。但元件可以使用自己的流程屬性覆蓋預設值,允許您跨多個流程分佈應用程式。

如果分配給此屬性的名稱以冒號(':')開頭,則在需要時建立一個專用於應用程式的新程序,並在該程序中執行該服務。如果程序名稱以小寫字元開頭,則服務將在該名稱的全域性程序中執行,前提是它具有這樣做的許可權。這允許不同應用程式中的元件共享程序,從而減少資源使用。

參閱:

引入於:

API Level 1