語法(SYNTAX):
android:exported=["true"|"false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string">
. . .
被包含于(CONTAINED IN):
可能包含的元素(CAN CONTAIN):
說明(DESCRIPTION):
這個(gè)元素用于聲明一個(gè)服務(wù)(Service類的子類)作為應(yīng)用程序的組件之一。跟Activity不一樣绣溜,服務(wù)沒有可見的用戶界面暂殖。它們被用于實(shí)現(xiàn)長時(shí)的后臺操作玖翅,或提供能夠被其他應(yīng)用程序調(diào)用的通信API秃踩。
所有的服務(wù)都必須用清單文件中的元素來代表判导。任何沒有在清單中聲明的服務(wù)都不能被系統(tǒng)看到恃锉,也不會(huì)被運(yùn)行棺牧。
屬性(ATTRIBUTES):
android:enabled
這個(gè)屬性用于指示該服務(wù)是否能夠被實(shí)例化隔盛。如果設(shè)置為true犹菱,則能夠被實(shí)例化,否則不能被實(shí)例化吮炕。默認(rèn)值是true腊脱。
元素有它自己的enabled屬性,它的這個(gè)屬性適用于應(yīng)用中所有的組件龙亲,包括service組件陕凹。對于被啟用的服務(wù),和元素的enabled屬性都必須是true(默認(rèn)值都是true)鳄炉。如果有一個(gè)元素的enabled屬性被設(shè)置為false杜耙,該服務(wù)就會(huì)被禁用,而不能被實(shí)例化拂盯。
android:exported
這個(gè)屬性用于指示該服務(wù)是否能夠被其他應(yīng)用程序組件調(diào)用或跟它交互佑女。如果設(shè)置為true,則能夠被調(diào)用或交互谈竿,否則不能珊豹。設(shè)置為false時(shí),只有同一個(gè)應(yīng)用程序的組件或帶有相同用戶ID的應(yīng)用程序才能啟動(dòng)或綁定該服務(wù)榕订。
它的默認(rèn)值依賴與該服務(wù)所包含的過濾器店茶。沒有過濾器則意味著該服務(wù)只能通過指定明確的類名來調(diào)用,這樣就是說該服務(wù)只能在應(yīng)用程序的內(nèi)部使用(因?yàn)槠渌獠渴褂谜卟粫?huì)知道該服務(wù)的類名)劫恒,因此這種情況下贩幻,這個(gè)屬性的默認(rèn)值是false轿腺。另一方面,如果至少包含了一個(gè)過濾器丛楚,則意味著該服務(wù)可以給外部的其他應(yīng)用提供服務(wù)族壳,因此默認(rèn)值是true。
這個(gè)屬性不是限制把服務(wù)暴露給其他應(yīng)用程序的唯一方法趣些。還可以使用權(quán)限來限制能夠跟該服務(wù)交互的外部實(shí)體仿荆。
android:icon
這個(gè)屬性定義了一個(gè)代表服務(wù)的圖標(biāo),它必須要引用一個(gè)包含圖片定義的可繪制資源坏平。如果這個(gè)屬性沒有設(shè)置拢操,則會(huì)使用元素的icon屬性所設(shè)定的圖標(biāo)來代替。
無論是元素設(shè)置的圖標(biāo)舶替,還是元素所設(shè)置的圖標(biāo)令境,它們都是該服務(wù)所有的Intent過濾器的默認(rèn)圖標(biāo)。
android:label
這個(gè)屬性用于設(shè)定一個(gè)要顯示給用戶的服務(wù)的名稱顾瞪。如果沒有設(shè)置這個(gè)屬性舔庶,則會(huì)使用元素的label屬性值來代替。
無論是設(shè)定的標(biāo)簽陈醒,還是元素設(shè)定的標(biāo)簽惕橙,它們都是該服務(wù)所有的Intent過濾器的默認(rèn)標(biāo)簽。
這個(gè)標(biāo)簽應(yīng)用引用一個(gè)字符串資源钉跷,以便它能夠像用戶界面中的字符串一樣能夠被本地化弥鹦。但是,為了開發(fā)應(yīng)用程序方便尘应,也可以使用原生字符串來設(shè)置這個(gè)屬性惶凝。
android:name
這個(gè)屬性用于指定實(shí)現(xiàn)該服務(wù)的Service子類的類名。它應(yīng)該是完整的Java類名(如:com.example.project.RoomService)犬钢。但是苍鲜,也可以使用簡寫(如:.RoomService),系統(tǒng)會(huì)把元素中package屬性所設(shè)定的值添加到簡寫名稱的前面玷犹。
一旦發(fā)布了應(yīng)用程序混滔,就不應(yīng)該改變這個(gè)名稱(除非android:exported=”false”)。
這個(gè)屬性沒有默認(rèn)值歹颓,名稱必須要指定坯屿。
android:permission
這個(gè)屬性定義了要啟動(dòng)或綁定服務(wù)的實(shí)體必須要有的權(quán)限。如果調(diào)用者的startService()巍扛、bindService()和stopService()方法沒有被授予這個(gè)權(quán)限领跛,那么這些方法就不會(huì)工作,并且Intent對象也不會(huì)發(fā)送給改服務(wù)撤奸。
如果這個(gè)屬性沒被設(shè)置吠昭,那么通過元素的permission屬性所設(shè)定的權(quán)限就會(huì)適用于該服務(wù)喊括。如果元素也沒有設(shè)置權(quán)限,則該服務(wù)不受權(quán)限保護(hù)矢棚。
android:process
這個(gè)屬性用于設(shè)定服務(wù)所運(yùn)行的進(jìn)程名稱郑什。通常,應(yīng)用程序的所有組件都運(yùn)行在給應(yīng)用程序創(chuàng)建的進(jìn)程中蒲肋,進(jìn)程名與應(yīng)用程序的包名相同蘑拯。元素的process屬性能夠給應(yīng)用程序的所有組件設(shè)置一個(gè)不同的默認(rèn)名稱。但是每個(gè)組件自己的process屬性都能夠覆蓋這個(gè)默認(rèn)值兜粘,這樣允許把應(yīng)用程序分離到不同的多個(gè)進(jìn)程中申窘。
如果這個(gè)屬性值用“:”開頭,則在需要的時(shí)候系統(tǒng)會(huì)創(chuàng)建一個(gè)新的妹沙,應(yīng)用程序私有的進(jìn)程偶洋,并且該服務(wù)也會(huì)運(yùn)行在這個(gè)進(jìn)程中熟吏。如果這個(gè)屬性值用小寫字母開頭距糖,那該服務(wù)就會(huì)運(yùn)行在以這個(gè)屬性值命名的全局進(jìn)程中,它提供了使其工作的權(quán)限牵寺。這樣就允許不同的應(yīng)用程序組件來共享這個(gè)進(jìn)程悍引,從而降低資源的使用。
被引入的版本(INTRODUCED IN):
API Level 1