在安卓系統(tǒng)中:當(dāng)系統(tǒng)內(nèi)存不足時(shí)夫晌,Android系統(tǒng)將根據(jù)進(jìn)程的優(yōu)先級(jí)選擇殺死一些不太重要的進(jìn)程,優(yōu)先級(jí)低的先殺死扣甲。進(jìn)程優(yōu)先級(jí)從高到低如下:
前臺(tái)進(jìn)程
- 處于正在與用戶交互的activity
- 與前臺(tái)activity綁定的service
- 調(diào)用了startForeground()方法的service
- 正在執(zhí)行oncreat()揭厚,onstart(),ondestroy方法的 service芒率。
- 進(jìn)程中包含正在執(zhí)行onReceive()方法的BroadcastReceiver隆敢。
系統(tǒng)中的前臺(tái)進(jìn)程并不會(huì)很多决摧,而且一般前臺(tái)進(jìn)程都不會(huì)因?yàn)閮?nèi)存不足被殺死。特殊情況除外取胎。當(dāng)內(nèi)存低到無法保證所有的前臺(tái)進(jìn)程同時(shí)運(yùn)行時(shí)德玫,才會(huì)選擇殺死某個(gè)進(jìn)程匪蟀。
可視進(jìn)程
- 為處于前臺(tái),但仍然可見的activity(例如:調(diào)用了onpause()而還沒調(diào)用onstop()的activity)宰僧。典型情況是:運(yùn)行activity時(shí)材彪,彈出對(duì)話框(dialog等),此時(shí)的activity雖然不是前臺(tái)activity琴儿,但是仍然可見段化。
- 可見activity綁定的service。(處于上訴情況下的activity所綁定的service)
可視進(jìn)程一般也不會(huì)被系統(tǒng)殺死造成,除非為了保證前臺(tái)進(jìn)程的運(yùn)行不得已而為之显熏。
服務(wù)進(jìn)程
- 已經(jīng)啟動(dòng)的service
后臺(tái)進(jìn)程
- 不可見的activity(調(diào)用onstop()之后的activity)
后臺(tái)進(jìn)程不會(huì)影響用戶的體驗(yàn),為了保證前臺(tái)進(jìn)程晒屎,可視進(jìn)程喘蟆,服務(wù)進(jìn)程的運(yùn)行缓升,系統(tǒng)隨時(shí)有可能殺死一個(gè)后臺(tái)進(jìn)程。當(dāng)一個(gè)正確實(shí)現(xiàn)了生命周期的activity處于后臺(tái)被殺死時(shí)蕴轨,如果用戶重新啟動(dòng)港谊,會(huì)恢復(fù)之前的運(yùn)行狀態(tài)。
空進(jìn)程
- 任何沒有活動(dòng)的進(jìn)程
系統(tǒng)會(huì)殺死空進(jìn)程尺棋,但這不會(huì)造成影響∶圊危空進(jìn)程的存在無非為了一些緩存膘螟,以便于下次可以更快的啟動(dòng)。