我們知道在Android中属划,經(jīng)车海看到AndroidManifest.xml文件中有一些主件會(huì)添加一個(gè)process屬性搀别,大多數(shù)都是在service組件中添加的,例如:
<service
android:name="com.ebanswers.sample.GuardService"
android:process=":guard" />
其中g(shù)urad可以隨意起名字执赡,前面的冒號(hào)則表示該guard進(jìn)程是主進(jìn)程的一個(gè)子進(jìn)程镰踏,一般來(lái)說(shuō)主進(jìn)程的進(jìn)程名即為應(yīng)用的包名。例如當(dāng)前應(yīng)用包名為:com.ebanswers.sample那么GuardService所在的進(jìn)程名則為:com.ebanswers.sample:guard沙合。之所以開(kāi)一個(gè)子進(jìn)程大部分原因主要是盡量防止該組件被殺奠伪,這也是為什么大部分用到這個(gè)屬性的組件會(huì)是service。當(dāng)然防止service被殺的方法有很多首懈,例如:開(kāi)啟前臺(tái)服務(wù)绊率,雙進(jìn)程互相監(jiān)聽(tīng),利用廣播等等這里就不一一介紹了究履。 可以看到其實(shí)很多sdk也都用到了這個(gè)屬性滤否,諸如:極光推送,百度定位最仑,喜馬拉雅等等藐俺,所以還是有必要了解一下。
值得注意的一點(diǎn)就是如果你的應(yīng)用繼成了Application來(lái)實(shí)現(xiàn)自己的Application的話泥彤,那么對(duì)應(yīng)的該Application的onCreate方法則會(huì)走1+n次其中n代表了你開(kāi)了幾個(gè)子進(jìn)程欲芹,所以在onCreate方法中做一些初始化工作的時(shí)候特別要注意這一點(diǎn)。