Android實現雙進程守護的時候啓動多個進程,作過android開發的人應該都知道應用會在系統資源匱乏
的狀況下被系統殺死!當後臺的應用被系統回收以後,如何從新恢復它呢?android
1.提升優先級shell
這個辦法對普通應用而言,應該只是下降了應用被殺死的機率,可是若是真的被系統回收了,
仍是沒法讓應用自動從新啓動!eclipse
2.讓service.onStartCommand返回START_STICKY進程
經過實驗發現,若是在adb shell當中kill掉進程模擬應用被意外殺死的狀況(或者用360手機衛士進行清理操做),
若是服務的onStartCommand返回START_STICKY,在eclipse的進程管理器中會發現過一小會後被殺死
的進程的確又會出如今任務管理器中,貌似這是一個可行的辦法。可是若是在系統設置的App管理中
選擇強行關閉應用,這時候會發現即便onStartCommand返回了START_STICKY,應用仍是沒能從新啓動
起來!ip
3.android:persistent="true"
網上還提出了設置這個屬性的辦法,經過實驗發現即便設置了這個屬性,應用程序被kill以後仍是不能從新啓動起來的!資源
4.讓應用成爲系統應用
實驗發現即便成爲系統應用,被殺死以後也不能自動從新啓動。可是若是對一個系統應用設置了
persistent="true",狀況就不同了。實驗代表對一個設置了persistent屬性的系統應用,
即便kill掉會馬上重啓。一個設置了persistent="true"的系統應用,在android中具備core service
優先級,這種優先級的應用對系統的low memory killer是免疫的!開發
文章來源:www.itlanbao.com
get