屬性羅列
<service android:description="string resource"
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string" >
. . .
</service>
android:description
就是一個(gè)描述愕贡,描述服務(wù)的作用巷屿,或者備注,隨便寫憨琳,無所謂
android:icon
圖標(biāo)唄
android:label
標(biāo)簽唄篙螟,沒啥用问拘,和description差不多
android:name
名字唄
android:enabled
能否被實(shí)例化骤坐。因?yàn)閟ervice標(biāo)簽包含在application中,必須兩個(gè)都為true蕾久,才能被實(shí)例化并使用
android:exported
其他應(yīng)用程序的組件是否可以調(diào)用服務(wù)或與其交互腔彰。
設(shè)置為false時(shí)辖佣,只有同一個(gè)應(yīng)用程序的組件或帶有相同用戶ID的應(yīng)用程序才能啟動或綁定該服務(wù)卷谈。
pid就是進(jìn)程id。一般而言端逼,應(yīng)用開啟后污淋,系統(tǒng)為其分配一個(gè)獨(dú)一無二的pid寸爆,但是可以通過使用process屬性而成為多進(jìn)程應(yīng)用(比如說service的process:remote)盐欺。
uid就是用戶id冗美。主要是用來數(shù)據(jù)共享粉洼。默認(rèn)情況叶摄,Android為每個(gè)應(yīng)用也分配了獨(dú)一無二的uid,所以如果需要兩個(gè)應(yīng)用數(shù)據(jù)共享的話挫剑,就讓他們的uid一樣(條件之一樊破,完整做法暫不研究唆铐,艾岂。好像如果兩個(gè)應(yīng)用都是自己開發(fā)的話,使用簽名文件可以共享(所以如果不知道你的簽名文件脆炎,直接可以查看你的shareduserid也沒用)秒裕。而如果其中一個(gè)是系統(tǒng)應(yīng)用的話則直接就可以)钞啸。做法:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.a.a"
android:versionCode="1"
android:versionName="1.0"
android:sharedUserId="com.share"
>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.a.b"
android:versionCode="1"
android:versionName="1.0"
android:sharedUserId="com.share"
>
android:exported的默認(rèn)值体斩,根據(jù)是否有intent-filter而不同。如果有弧烤,默認(rèn)為true扼褪。如果沒有,默認(rèn)為false话浇。
android:permission
android:process
默認(rèn)情況下幔崖,服務(wù)是運(yùn)行在該應(yīng)用所在的進(jìn)程中赏寇〖廴希可以通過這個(gè)屬性,將服務(wù)聲明運(yùn)行在新的進(jìn)程中渠退。
命名的規(guī)則是有區(qū)別的碎乃。
假如是我們的進(jìn)程名是com.example.a惠奸。如果process是":"冒號開頭的。比如android:process=“:remote”梗掰。那么就會新開一個(gè)進(jìn)程com.example.a.remote來運(yùn)行service及穗,但是這個(gè)進(jìn)程僅對該應(yīng)用私有妈拌。
如果不以冒號開頭尘分。比如android:process=“com.example.remote”,那就是新開一個(gè)全局進(jìn)程com.example.remote來運(yùn)行服務(wù)。著摔。這將允許在不同應(yīng)用中的各種組件可以共享一個(gè)進(jìn)程定续,從而減少資源的占用禾锤。(好像還需要其他權(quán)限才能共享恩掷,再說)
遠(yuǎn)程服務(wù)的適用場景
一般適用于為其它應(yīng)用程序提供公共服務(wù)的Service黄娘,這種Service即為系統(tǒng)常駐的Service(如:天氣服務(wù)等)。
優(yōu)點(diǎn)
1.遠(yuǎn)程服務(wù)有自己的獨(dú)立進(jìn)程逼争,不會受到其它進(jìn)程的影響誓焦;
2.可以被其它進(jìn)程復(fù)用着帽,提供公共服務(wù);
3.具有很高的靈活性启摄。
缺點(diǎn)
相對普通服務(wù)歉备,占用系統(tǒng)資源較多,使用AIDL進(jìn)行IPC也相對麻煩喧笔。