加強(qiáng)APP存活時(shí)間

參考:http://www.reibang.com/p/63aafe3c12af#

現(xiàn)在APP有這樣一個(gè)需求:當(dāng)APP縮后臺(tái)后,轉(zhuǎn)去使用其他APP寡夹,再回來的時(shí)候APP是重新啟動(dòng)!現(xiàn)在要做的是盡量避免這個(gè)事情昭殉!

What

問題出現(xiàn)于現(xiàn)有App內(nèi)有一個(gè)開屏頁雏婶,也就是每次進(jìn)入都會(huì)有的那個(gè)閃屏頁。那么就有兩個(gè)思路室梅,一個(gè)是把開屏頁去掉!一個(gè)是提升APP的存活時(shí)間疚宇,也就是使APP的回收級(jí)別提高亡鼠!

How

提升APP存活時(shí)間大致有三種方法:1、黑色被壹担活拆宛,2、白色彼先觯活浑厚,3股耽、灰色保活:

黑色鼻活:利用不同的APP之間進(jìn)行廣播喚醒物蝙,可以使第三方APP也可以是系統(tǒng)的APP

白色保活:啟動(dòng)前臺(tái)Service

灰色备壹瑁活:利用系統(tǒng)的漏洞啟動(dòng)前臺(tái)Service

黑色蔽芷颍活

1、開機(jī)钠导、網(wǎng)絡(luò)切換震嫉、拍照、拍視頻的廣播喚醒a(bǔ)pp牡属,但是從Android N取消了拍照票堵、拍視頻、網(wǎng)絡(luò)切換等廣播逮栅。而開機(jī)廣播再有的第三方rom也去掉了悴势。

2、接入SDK喚醒a(bǔ)pp措伐。比如你介入了微信sdk會(huì)喚醒微信特纤,支付寶sdk會(huì)喚醒支付寶〗募樱或者有的推送sdk也會(huì)喚醒a(bǔ)pp捧存。

3、其他app喚起同家公司app官硝。比如矗蕊,騰訊系app喚醒騰訊系其他產(chǎn)品短蜕。

白色鼻饧埽活

啟動(dòng)前臺(tái)的Service進(jìn)程。也就是說在迸竽В活的進(jìn)程中啟動(dòng)一個(gè)Service岖研,然后Service中啟動(dòng)一個(gè)通知Noification,比如QQ音樂警检,360通知欄等等孙援。

灰色保活

也是啟動(dòng)一個(gè)前臺(tái)的Service進(jìn)程扇雕,但是與普通的啟動(dòng)方式區(qū)別在于拓售,通知欄不會(huì)出現(xiàn)一個(gè)Notification,看起來就如同運(yùn)行著一個(gè)后臺(tái)Service進(jìn)程一樣镶奉。這樣的話就使得自身進(jìn)程優(yōu)先級(jí)高于普通后臺(tái)進(jìn)程的础淤。

具體可參考原文:http://www.reibang.com/p/63aafe3c12af#

再者說為什么QQ進(jìn)程不死崭放,我也曾認(rèn)為存在這樣一種技術(shù)「胄祝可惜我把手機(jī)root后币砂,殺掉QQ進(jìn)程之后就再也起不來了。有些手機(jī)廠商把這些知名的app放入了自己的白名單中玻侥,保證了進(jìn)程不死來提高用戶體驗(yàn)(如微信决摧、QQ、陌陌都在小米的白名單中)凑兰。如果從白名單中移除掌桩,他們終究還是和普通app一樣躲避不了被殺的命運(yùn),為了盡量避免被殺姑食,還是老老實(shí)實(shí)去做好優(yōu)化工作吧拘鞋。

Why

首先進(jìn)程回收是有個(gè)優(yōu)先級(jí)的,優(yōu)先級(jí)從高到低是:

  1. 前臺(tái)進(jìn)程(Foreground Process)
  2. 可視進(jìn)程(Visible Process)
  3. 服務(wù)進(jìn)程(Service Process)
  4. 后臺(tái)進(jìn)程(Background Process)
  5. 空進(jìn)程(Empty Process)

熟悉Android系統(tǒng)的童鞋都知道矢门,系統(tǒng)出于體驗(yàn)和性能上的考慮盆色,app在退到后臺(tái)時(shí)系統(tǒng)并不會(huì)真正的kill掉這個(gè)進(jìn)程,而是將其緩存起來祟剔。打開的應(yīng)用越多隔躲,后臺(tái)緩存的進(jìn)程也越多。在系統(tǒng)內(nèi)存不足的情況下物延,系統(tǒng)開始依據(jù)自身的一套進(jìn)程回收機(jī)制來判斷要kill掉哪些進(jìn)程宣旱,以騰出內(nèi)存來供給需要的app。這套殺進(jìn)程回收內(nèi)存的機(jī)制就叫 Low Memory Killer 叛薯,它是基于Linux內(nèi)核的 OOM Killer(Out-Of-Memory killer)機(jī)制誕生浑吟。

其他方法的一些參考

https://www.zhihu.com/question/29826231
把你的應(yīng)用做到QQ那么大,那么有用戶需求耗溜,不需要流氓组力,所有的工具軟件都會(huì)把它加入白名單。

1抖拴、Service設(shè)置成START_STICKY燎字,kill 后會(huì)被重啟(等待5秒左右),重傳Intent阿宅,保持與重啟前一樣

2候衍、通過 startForeground將進(jìn)程設(shè)置為前臺(tái)進(jìn)程,做前臺(tái)服務(wù)洒放,優(yōu)先級(jí)和前臺(tái)應(yīng)用一個(gè)級(jí)別?蛉鹿,除非在系統(tǒng)內(nèi)存非常缺,否則此進(jìn)程不會(huì)被 kill(本文類似方法)

3往湿、雙進(jìn)程Service:讓2個(gè)進(jìn)程互相保護(hù)妖异,其中一個(gè)Service被清理后惨好,另外沒被清理的進(jìn)程可以立即重啟進(jìn)程

4、QQ黑科技:在應(yīng)用退到后臺(tái)后随闺,另起一個(gè)只有 1 像素的頁面停留在桌面上日川,讓自己保持前臺(tái)狀態(tài),保護(hù)自己不被后臺(tái)清理工具殺死

5矩乐、在已經(jīng)root的設(shè)備下龄句,修改相應(yīng)的權(quán)限文件,將App偽裝成系統(tǒng)級(jí)的應(yīng)用(Android4.0系列的一個(gè)漏洞散罕,已經(jīng)確認(rèn)可行)

6分歇、Android系統(tǒng)中當(dāng)前進(jìn)程(Process)fork出來的子進(jìn)程,被系統(tǒng)認(rèn)為是兩個(gè)不同的進(jìn)程欧漱。當(dāng)父進(jìn)程被殺死的時(shí)候职抡,子進(jìn)程仍然可以存活,并不受影響误甚。鑒于目前提到的在Android-Service層做雙守護(hù)都會(huì)失敗缚甩,我們可以fork出c進(jìn)程,多進(jìn)程守護(hù)窑邦。死循環(huán)在那檢查是否還存在擅威,具體的思路如下(Android5.0以下可行聽說耗電量增加):①用C編寫守護(hù)進(jìn)程(即子進(jìn)程),守護(hù)進(jìn)程做的事情就是循環(huán)檢查目標(biāo)進(jìn)程是否存在冈钦,不存在則啟動(dòng)它郊丛。②在NDK環(huán)境中將1中編寫的C代碼編譯打包成可執(zhí)行文件(BUILD_EXECUTABLE)。③主進(jìn)程啟動(dòng)時(shí)將守護(hù)進(jìn)程放入私有目錄下瞧筛,賦予可執(zhí)行權(quán)限厉熟,啟動(dòng)它即可。

7较幌、聯(lián)系廠商揍瑟,加入白名單

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绅络,隨后出現(xiàn)的幾起案子月培,更是在濱河造成了極大的恐慌,老刑警劉巖恩急,帶你破解...
    沈念sama閱讀 212,686評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纪蜒,居然都是意外死亡衷恭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門纯续,熙熙樓的掌柜王于貴愁眉苦臉地迎上來随珠,“玉大人灭袁,你說我怎么就攤上這事〈翱矗” “怎么了茸歧?”我有些...
    開封第一講書人閱讀 158,160評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)显沈。 經(jīng)常有香客問我软瞎,道長(zhǎng),這世上最難降的妖魔是什么拉讯? 我笑而不...
    開封第一講書人閱讀 56,736評(píng)論 1 284
  • 正文 為了忘掉前任涤浇,我火速辦了婚禮,結(jié)果婚禮上魔慷,老公的妹妹穿的比我還像新娘只锭。我一直安慰自己,他們只是感情好院尔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評(píng)論 6 386
  • 文/花漫 我一把揭開白布蜻展。 她就那樣靜靜地躺著,像睡著了一般邀摆。 火紅的嫁衣襯著肌膚如雪铺呵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,043評(píng)論 1 291
  • 那天隧熙,我揣著相機(jī)與錄音片挂,去河邊找鬼。 笑死贞盯,一個(gè)胖子當(dāng)著我的面吹牛音念,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躏敢,決...
    沈念sama閱讀 39,129評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼闷愤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了件余?” 一聲冷哼從身側(cè)響起讥脐,我...
    開封第一講書人閱讀 37,872評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啼器,沒想到半個(gè)月后旬渠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,318評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡端壳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評(píng)論 2 327
  • 正文 我和宋清朗相戀三年告丢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片损谦。...
    茶點(diǎn)故事閱讀 38,777評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岖免,死狀恐怖岳颇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颅湘,我是刑警寧澤话侧,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站闯参,受9級(jí)特大地震影響瞻鹏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赢赊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一乙漓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧释移,春花似錦叭披、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至熏纯,卻和暖如春同诫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背樟澜。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工误窖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秩贰。 一個(gè)月前我還...
    沈念sama閱讀 46,589評(píng)論 2 362
  • 正文 我出身青樓霹俺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親毒费。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丙唧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評(píng)論 2 351

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