安卓開啟多進(jìn)程方式
1娜睛,安卓開啟多進(jìn)程的方式: 在manifest文件中給Activity 配置 android:process="" 屬性 引號(hào)內(nèi)接進(jìn)程名。
如上圖冕屯,這兩個(gè)activity運(yùn)行在不同的進(jìn)程中。沒(méi)有指定process屬性的,運(yùn)行在默認(rèn)進(jìn)程中谋减,進(jìn)程名是包名。
ThirdActivity中的process屬性中的“:”表示前面附加程序包名扫沼。并且是私有進(jìn)程出爹,其他應(yīng)用的組件不能通過(guò)shareUID方式和它跑在同一個(gè)進(jìn)程中。而進(jìn)程名不以“:”開頭的屬于全局進(jìn)程缎除,其他應(yīng)用可以通過(guò)ShareUID方式與它跑在一個(gè)進(jìn)程中严就。
一般來(lái)說(shuō),多進(jìn)程會(huì)造成如下面幾方面的問(wèn)題:
- 靜態(tài)成員和單例模式完全失效
- 線程同步機(jī)制完全失效
- SharePreference的可靠性下降器罐。
- Application會(huì)被多次創(chuàng)建
在操作系統(tǒng)中梢为,線程是CPU調(diào)度的最小單元,而進(jìn)程是一個(gè)執(zhí)行單元,一個(gè)進(jìn)程可以包含單個(gè)或者多個(gè)線程铸董∷钣。回到安卓中,每一個(gè)應(yīng)用一般就是一個(gè)進(jìn)程粟害,都有一個(gè)獨(dú)立的虛擬機(jī)蕴忆,不同的虛擬機(jī)在內(nèi)存分配上有不同的地址空間,所以多進(jìn)程就有多個(gè)虛擬機(jī)(類似應(yīng)用多開)悲幅,也就是說(shuō)一旦你的應(yīng)用開啟了多進(jìn)程套鹅,其實(shí)想當(dāng)于開啟了多個(gè)應(yīng)用,于是Application就會(huì)被多次創(chuàng)建汰具,既然是多個(gè)應(yīng)用卓鹿,每個(gè)應(yīng)用里面的對(duì)象都不關(guān)聯(lián)的,所以靜態(tài)成員和單例模式失效留荔,既然對(duì)象是獨(dú)立的减牺,那么鎖也是獨(dú)立的,所以線程同步機(jī)制失效存谎。