android:process=":remote"屬性解說


在學習Android Service組件的過程中碰到了一個問題,就是在Android應用的聲明文件Manifest.xml中有時候會對相關的服務標簽設置一個android:process=”:remote”,這個屬性有什么作用呢?下面筆者就將自己整理的知識和大家分享。

 在Android的幫助文檔中我們可以了解到,一般情況下一個服務沒有自己獨立的進程,它一般是作為一個線程運行於它所在的應用的進程中。但是也有例外,Android聲明文件中的android:process屬性卻可以為任意組件包括應用指定進程,換句話說,通過在聲明文件中設置android:process屬性,我們可以讓組件(例如Activity, Service等)和應用(Application)創建並運行於我們指定的進程中。下面是相關資料和筆者翻譯。

Android:關於聲明文件中android:process屬性說明

 如果我們需要讓一個服務在一個遠端進程中運行(而不是標准的它所在的apk的進程中運行),我們可以在聲明文件中這個服務的標簽中通過android:process屬性為其指定一個進程。

 注意:這里選擇”remote”這個名字是隨意主觀的,你能用其他名字來讓這個服務在另外的進程中運行。冒號’:’這個前綴將把這個名字附加到你的包所運行的標准進程名字的后面作為新的進程名稱。

例如:一個應用的包名為com.aoyousatuo.example, 則本例中服務將運行的新進程的名稱為com.aoyousatuo.example:remote.(注意,如果聲明文件中的組件或者應用沒有指定這個屬性則默認應用和其組件將相應運行在以其包名命名的進程中).

Android:關於聲明文件中android:process屬性說明

android:process

 服務所在進程的名字。通常,一個應用的所有組件都運行在系統為這個應用所創建的默認進程中。這個默認進程是用這個應用的包名來命名的。

 標簽的process屬性可以設置成和所有組件都不同的默認值。但是這些組件可以通過設置自己的process值來覆寫這個默認值,這樣可以讓你的應用跨多進程運行。

如果被設置的進程名是以一個冒號開頭的,則這個新的進程對於這個應用來說是私有的,當它被需要或者這個服務需要在新進程中運行的時候,這個新進程將會被創建。如果這個進程的名字是以小寫字符開頭的,則這個服務將運行在一個以這個名字命名的全局的進程中,當然前提是它有相應的權限。這將允許在不同應用中的各種組件可以共享一個進程,從而減少資源的占用。

 例如一個應用運行在進程com.aoyousatuo.example中,android:process屬性設置為com.rabbit.man,則新的進程名字為com.rabbit.run.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM