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

來源:互聯網
上載者:User

標籤:

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

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


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

          注意:這裡選擇”remote”這個名字是隨意主觀的,你能用其他名字來讓這個服務在另外的進程中運行。冒號’:’這個首碼將把這個名字附加到你的包所啟動並執行標準進程名字的後面作為新的進程名稱。

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


android:process

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

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

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

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.