1. 程式人生 > >同一APP多個程序

同一APP多個程序

預設情況下,同一個APP處於同一程序中。如果需要將某一元件(Android四大元件)放入單獨的程序,可以在元件宣告中,新增android:process屬性。例如。

<activity
android:name="com.breakloop.demo.MainActivity"
android:process="otherprocess" />

對於android:process,需要注意以下兩點

(1)若名稱以“:”開始,則為APP的私有程序。程序實際名稱為APP package+程序名稱。

例如“:newprocess”,package為“com.breakloop.demo”,則實際程序名稱為com.breakloop.demo:newprocess。

(2)若名稱不以“:”開始,則該程序為共有程序。實際名稱即為定義名稱。

附:

在開發過程中,曾遇到一個問題。

定義了一個公用靜態變數A,在程序1中修改其值,在程序2中再次訪問,卻發現A的值還是舊值。當時不解。

突然才明白,這便是同進程和多程序的不同。若在同一程序中,A肯定是新值。

對於Android來說,每個程序都有自己獨有的虛擬機器。因此,程序1,2都有自己的公用靜態變數A。其中一個變化,並不影響另一個副本。

同樣的,單例模式和執行緒同步機制也會失效~

今天藉此一併記下,以免同一個坑裡摔倒兩回~