Android進(jìn)程保活心得

最近很忙,老板的需求不斷,又是獨(dú)立開發(fā),還需要兼顧其他一些事情。當(dāng)然這些都是給自己的借口。以后勤勞一點(diǎn),寫點(diǎn)文章也算留點(diǎn)念想。
因?yàn)轫?xiàng)目實(shí)現(xiàn)了鬧鐘功能,也就牽扯到了進(jìn)程?;睢K^?;罴催M(jìn)程在后臺(tái)一直運(yùn)行不被殺死。統(tǒng)計(jì)一下目前的保活手段:

1.監(jiān)聽系統(tǒng)廣播,如開機(jī)、充電狀態(tài)、網(wǎng)絡(luò)變化、安裝卸載app、鎖屏解鎖、集成的推送消息等等,親測無效,在進(jìn)程被殺了之后也無法再監(jiān)聽到系統(tǒng)廣播,也就不存在拉起,只能作為輔助手段,稍后會(huì)提起。
2.實(shí)現(xiàn)一個(gè)隱藏的前臺(tái)服務(wù),這個(gè)網(wǎng)上很多實(shí)現(xiàn)方法,也是我最開始使用的手段。實(shí)際上是把進(jìn)程的優(yōu)先級(jí)給提高了一級(jí),鎖屏?xí)r間長了還是會(huì)被殺死。
3.使用Linux命令啟動(dòng)一個(gè)新進(jìn)程進(jìn)行相互保護(hù)。才疏學(xué)淺,并不太理解原理,不敢多說,詳情看這篇博客。親測無效,不敢說是大神寫的不對(duì),可能是我姿勢(shì)不對(duì)。
4.?使用子進(jìn)程進(jìn)行相互保護(hù),簡而言之就是建兩個(gè)service,一個(gè)是子進(jìn)程:

android:process=":remote"

親測無效,這個(gè)一點(diǎn)點(diǎn)用都沒有,因?yàn)檫M(jìn)程被殺了之后子進(jìn)程也同時(shí)被殺。
5.謠傳QQ曾經(jīng)讓自己不被殺死,曾使用過后臺(tái)顯示一個(gè)全透明的、只有1x1像素大小的窗口,這個(gè)很匪夷所思,像IOS5之后的后臺(tái)無限播放無聲音樂一樣狗血,甚至曾經(jīng)我還嘲笑過這個(gè)做法,認(rèn)為是給開發(fā)者抹黑,擾亂環(huán)境云云。今天就打臉了,因?yàn)槲医裉炀驮谏a(chǎn)環(huán)境上用了這個(gè)做法。

以上所有出現(xiàn)的"被殺死"字樣全部指的是進(jìn)程后臺(tái)狀態(tài)自動(dòng)被殺死,而不是指用戶手用殺死,類似iphone連按兩次HOME鍵上劃殺死后臺(tái)進(jìn)程,這個(gè)只有一種辦法保證不被殺死,就是把你應(yīng)用加入到系統(tǒng)殺死進(jìn)程的白名單。所謂跟手機(jī)廠商合作加入白名單就是指這個(gè)。這里不得不說一個(gè)很有意思的app:日程管理時(shí)間管理。它里面有引導(dǎo)用戶進(jìn)行白名單設(shè)置的操作,很有意思,同事讓我看的時(shí)候我只想說



??簡單說上它就是引導(dǎo)用戶手動(dòng)設(shè)置了“廠商把你的app加入白名單”這個(gè)操作,這個(gè)也被我學(xué)了過去,連帶著頁面一起。這只是第一步。
??接下來如我上面所說,除了4被遺棄之外,把所有的手段都用上了,一開始并沒有用5,因?yàn)槲腋杏X已經(jīng)夠了。但是依然無法阻止在鎖屏+后臺(tái)的情況下被殺。于是我用上了最后一種手段。下一篇博客會(huì)詳細(xì)說明。
??最后一步,我參考了360,在雙擊返回鍵后并沒有

 Process.killProcess(Process.myPid());

System.exit(0);

而是

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
getAppContext().startActivity(intent);

并且在清單文件中加入了

android:excludeFromRecents="true"

作用是不在最近使用的列表中出現(xiàn),也就是連按兩次HOME鍵就不會(huì)出現(xiàn)我的app了。
??至此,我整個(gè)的?;罹徒Y(jié)束了。歡迎技術(shù)討論,拍磚也請(qǐng)拍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容