android系統(tǒng)會盡量長期的保留應(yīng)用程序的進(jìn)程饭庞。
進(jìn)程的優(yōu)先級, 提供系統(tǒng)回收進(jìn)程的一套方案. 從高到低回收進(jìn)程.
只有系統(tǒng)內(nèi)存嚴(yán)重不足的時(shí)候 回收進(jìn)程∮ね荩回收的順序如下:
1.Foreground process 前臺進(jìn)程.用戶正在操作的進(jìn)程.
2.Visible process 可視進(jìn)程. 不能直接操作, 并且沒有獲取焦點(diǎn). 但是可以看到的應(yīng)用.
3.Service process 服務(wù)進(jìn)程. 在后臺長期運(yùn)行, 沒有界面的進(jìn)程.
4.Background process 后臺進(jìn)程. 當(dāng)我們打開一個(gè)應(yīng)用程序, 沒有關(guān)閉它, 點(diǎn)擊home鍵, 托管到后臺.
5.Empty process 空進(jìn)程. 當(dāng)我們把一個(gè)應(yīng)用程序關(guān)掉后, 系統(tǒng)沒有立刻的把進(jìn)程給回收掉, 這時(shí)候進(jìn)程中沒有組件, 變成空進(jìn)程.
android系統(tǒng)做了一個(gè)優(yōu)化, 當(dāng)特殊情況下, 需要回收Service process, Visible process, Foreground process 進(jìn)程時(shí), 回收后, 當(dāng)系統(tǒng)內(nèi)存夠用時(shí),又會把殺死的進(jìn)程重新啟動.
只有用戶手動的把服務(wù)給關(guān)閉掉, 那么服務(wù)才會真正的銷毀. 如果用戶沒有手動關(guān)閉, 服務(wù)會一直運(yùn)行在系統(tǒng)中.
#########################################################
有責(zé)任感的程序員不寫流氓代碼个少。
殺死自已程序的進(jìn)程:
//專注于自殺的方法锻全。
android.os.Process.killProcess(android.os.Process.myPid());
殺死別的程序的進(jìn)程:
//相當(dāng)于得到進(jìn)程管理器
ActivityManager am= (ActivityManager) getSystemService(ACTIVITY_SERVICE);
//專注于殺死別人
am.killBackgroundProcesses(packname);