Android中多進(jìn)程的應(yīng)用

Android中多進(jìn)程的應(yīng)用其實(shí)是單個(gè)apk中運(yùn)用多個(gè)進(jìn)程的概念垢村,那我們?nèi)绾问褂枚噙M(jìn)程呢割疾?

要想知道如何使用多進(jìn)程,首先我們得了解Android中多進(jìn)程的概念嘉栓。一般情況下宏榕,一個(gè)應(yīng)用程序就一個(gè)進(jìn)程,這個(gè)進(jìn)程的名稱就是應(yīng)用程序包名侵佃。我們知道進(jìn)程是系統(tǒng)分配資源和調(diào)度的基本單位麻昼,所以每個(gè)進(jìn)程都有自己獨(dú)立的資源和內(nèi)存空間,別的進(jìn)程是不能任意訪問(wèn)其他進(jìn)程的內(nèi)存和資源的趣钱。那如何讓自己的應(yīng)用擁有多個(gè)進(jìn)程涌献?

很簡(jiǎn)單,我們的四大組件在AndroidManifest文件中注冊(cè)的時(shí)候首有,有個(gè)屬性是android:process燕垃,這里可以指定組件的所處的進(jìn)程。默認(rèn)就是應(yīng)用的主進(jìn)程井联。指定為別的進(jìn)程之后卜壕,系統(tǒng)在啟動(dòng)這個(gè)組件的時(shí)候,就先創(chuàng)建(如果還沒(méi)創(chuàng)建的話)這個(gè)進(jìn)程烙常,然后再創(chuàng)建該組件轴捎。你可以重載Application類的onCreate方法,打印出它的進(jìn)程名稱蚕脏,就可以清楚的看見(jiàn)了侦副。再設(shè)置android:process屬性時(shí)候,有個(gè)地方需要注意:如果是android:process=":deamon"驼鞭,以:開頭的名字秦驯,則表示這是一個(gè)應(yīng)用程序的私有進(jìn)程,否則它是一個(gè)全局進(jìn)程挣棕。私有進(jìn)程的進(jìn)程名稱是會(huì)在冒號(hào)前自動(dòng)加上包名译隘,而全局進(jìn)程則不會(huì)。一般我們都是有私有進(jìn)程洛心,很少使用全局進(jìn)程固耘。

那么使用多進(jìn)程有什么好處和壞處呢?下面我們來(lái)分析下词身。

好處:1厅目、分擔(dān)主進(jìn)程的內(nèi)存壓力。我們的應(yīng)用越做越大,內(nèi)存越來(lái)越多损敷,將一些獨(dú)立的組件放到不同的進(jìn)程户辫,它就不占用主進(jìn)程的內(nèi)存空間了。比如在啟動(dòng)一個(gè)不可見(jiàn)的輕量級(jí)私有進(jìn)程嗤锉,在后臺(tái)收發(fā)消息,或者做一些耗時(shí)的事情墓塌,或者開機(jī)啟動(dòng)這個(gè)進(jìn)程等瘟忱。

? ? ? ? ? 2、防止主進(jìn)程被殺守護(hù)進(jìn)程苫幢,守護(hù)進(jìn)程和主進(jìn)程之間相互監(jiān)視访诱,有一方被殺就重新啟動(dòng)它。

壞處:1韩肝、多占了系統(tǒng)的內(nèi)存空間触菜,很容易沾滿而導(dǎo)致卡頓,同時(shí)也消耗用戶的電量哀峻。同時(shí)在啟動(dòng)單獨(dú)進(jìn)程時(shí)涡相,進(jìn)程的創(chuàng)建會(huì)影響繼承Application的實(shí)例,onCreate()會(huì)再次執(zhí)行一遍剩蟀。

? ? ? ? ? 2催蝗、不同進(jìn)程之間內(nèi)存不能共享,最大的弊端是他們之間通信麻煩育特,不能將公用數(shù)據(jù)放在Application中丙号,堆棧信息、文件操作也是獨(dú)立的缰冤,如果他們之間傳遞的數(shù)據(jù)不大并且是可序列化的犬缨,可以考慮通過(guò)Bundle傳遞, 如果數(shù)據(jù)量較大棉浸,則需要通過(guò)AIDL或者文件操作來(lái)實(shí)現(xiàn)怀薛。



關(guān)于android中多進(jìn)程的使用最常見(jiàn)的例子是Service,針對(duì)Service的使用我們應(yīng)注意以下情況:

1涮拗、應(yīng)用中有Activity部分有會(huì)使用較多的UI乾戏,占用較多的內(nèi)存資源,并且要求Activity退到后臺(tái)情況下要求Service在后臺(tái)運(yùn)行三热。因?yàn)锳ndroid本身有Low Memory Killer這套機(jī)制鼓择,在系統(tǒng)內(nèi)存吃緊的情況下會(huì)去會(huì)砍掉內(nèi)存占用較多(一般是OOM_ADJ值較大的Process),此時(shí)因?yàn)橛蠸ervice在后臺(tái)運(yùn)行,所以會(huì)降低OOM_ADJ,Low Memory Killer在砍Process的時(shí)候就不容易將此部分內(nèi)存回收就漾。此時(shí)可以考慮將Service從應(yīng)用進(jìn)程中分離出來(lái)呐能,這樣Low Memory Killer在回收內(nèi)存時(shí)會(huì)將因?yàn)锳ctivity部分占用的內(nèi)存較大,? OOM_ADJ較大,優(yōu)先將其砍掉釋放內(nèi)存摆出,同時(shí)保證Service正常運(yùn)行朗徊。

2、在系統(tǒng)中有很多有共性的Service偎漫,同時(shí)應(yīng)用中Activity顯示部分的UI不多或者沒(méi)有Activity.可以將這些Service合并成同一個(gè)進(jìn)程爷恳。因?yàn)閍ndroid每次啟動(dòng)一個(gè)進(jìn)程,在zygote fork階段會(huì)預(yù)載于一部分資源占用內(nèi)存(具體幾M記不清楚了)象踊,通過(guò)將Service合并温亲,可以節(jié)省這部分開銷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杯矩,一起剝皮案震驚了整個(gè)濱河市栈虚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌史隆,老刑警劉巖魂务,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異泌射,居然都是意外死亡粘姜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門熔酷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)相艇,“玉大人,你說(shuō)我怎么就攤上這事纯陨√逞浚” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵翼抠,是天一觀的道長(zhǎng)咙轩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)阴颖,這世上最難降的妖魔是什么活喊? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮量愧,結(jié)果婚禮上钾菊,老公的妹妹穿的比我還像新娘。我一直安慰自己偎肃,他們只是感情好煞烫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著累颂,像睡著了一般滞详。 火紅的嫁衣襯著肌膚如雪凛俱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天料饥,我揣著相機(jī)與錄音蒲犬,去河邊找鬼。 笑死岸啡,一個(gè)胖子當(dāng)著我的面吹牛原叮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播巡蘸,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼篇裁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了赡若?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤团甲,失蹤者是張志新(化名)和其女友劉穎逾冬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躺苦,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡身腻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匹厘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘀趟。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖愈诚,靈堂內(nèi)的尸體忽然破棺而出她按,到底是詐尸還是另有隱情,我是刑警寧澤炕柔,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布酌泰,位于F島的核電站,受9級(jí)特大地震影響匕累,放射性物質(zhì)發(fā)生泄漏陵刹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一欢嘿、第九天 我趴在偏房一處隱蔽的房頂上張望衰琐。 院中可真熱鬧,春花似錦炼蹦、人聲如沸羡宙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辛辨。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斗搞,已是汗流浹背指攒。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留僻焚,地道東北人允悦。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像虑啤,于是被迫代替她去往敵國(guó)和親隙弛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容