對於程式被殺死,一般我們能做到兩個方面優化:
保證程序的優先順序
當程序被殺死之後的喚醒
程序的優先順序
程序根據優先順序區分可以分為
前台程序
可見程序
服務程序
後台程序
空程序
程序中有個較為具體的值oom_adj,其數值越小對應的優先順序越高
紅色部分是易於被**的(4-16),綠色部分是不易被**的(0-4),白色部分則是不會被**的( -0)。
程序被**的場景:
鎖屏狀態一段時間之後,省電機制會kill程序
註冊乙個監聽鎖屏開屏的廣播,當鎖屏之後開啟乙個1畫素的透明activity的,可以將oom_adj提公升到0,,再當開屏的時候銷毀這個activity
使用者手動釋放記憶體
唯一的方法就是加入手機rom白名單
分兩種情況一種是有activity沒有service,當沒有記憶體的時候被殺死,開啟activity的時候會重新開啟之前的activity,另一種是帶有service的後台程序被kill,可以通過service自帶的api喚醒service
@override
public
intonstartcommand(intent intent, int flags, int startid)
Android程序保活
2個方法 1.不讓殺 2.殺了復活 程序優先順序 1.前台程序 resume 2.可見程序 pause 4.後台程序 5.空程序 不被殺提公升優先順序1.前台服務 啟用2個前台服務,消除通知 變成可見程序 2.廣播監聽鎖屏解鎖,啟動1畫素活動 儘量減少記憶體占用,在相同oom adj的情況下,也更加...
android程序保活實踐
前言 程序保活的關鍵點有兩個,乙個是程序優先順序的理解,優先順序越高存活機率越大。二是弄清楚哪些場景會導致程序會kill,然後採取下面的策略對各種場景進行優化 提高程序的優先順序 在程序被kill之後能夠喚醒 程序優先順序 android一般的程序優先順序劃分 1.前台程序 foreground p...
Android中的程序保活
最近在看aidl相關的知識,無意間看到一篇程序保活的文章,正好涉及到了程序相關的內容。順便學習一下。一 什麼是程序保活 程序保活可以理解為讓乙個程序最大程度不被殺死,或者殺死後第一時間復活。二 程序的劃分 1 活動程序 優先順序最高,使用者正在操作的程式,是前台程序,並且可操作。2 可見程序 次高優...