目前做的項(xiàng)目都是在安卓板上使用的芽丹,需要一直保持應(yīng)用在最頂層
最早的邏輯是判斷RunningTask,那時(shí)候用的安卓板還是4.4的卜朗,后來板子升級到了6.0拔第,該方法就失效了(在5.0已經(jīng)廢棄)
6.0用的是以下的方法
https://effmx.com/articles/tong-guo-android-fu-zhu-gong-neng-accessibility-service-jian-ce-ren-yi-qian-tai-jie-mian/
當(dāng)時(shí)因?yàn)闀r(shí)間倉促,所以也沒有細(xì)心研究场钉,是修改的老代碼蚊俺,那時(shí)候是單獨(dú)一個(gè)應(yīng)用,雖說能保證了指定應(yīng)用永遠(yuǎn)處于最上層逛万,但是設(shè)備配置和維護(hù)就比較麻煩泳猬,第一是要安裝兩個(gè)應(yīng)用,第二無障礙輔助需要手動(dòng)去設(shè)置(可以查找到自動(dòng)申請的代碼)宇植,第三想跳出應(yīng)用改個(gè)設(shè)置都很麻煩得封,設(shè)置的間隔時(shí)間很短,長了又容易出問題指郁。
所以后來在重構(gòu)項(xiàng)目的時(shí)候忙上,就沒再考慮這種方式,用了下面的方法
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){});
可以抓到程序因異常導(dǎo)致關(guān)閉的情況坡氯,就想著在這里進(jìn)行重啟應(yīng)用,就省掉了之前用來檢測的應(yīng)用
一開始感覺基本能滿足洋腮,但是在實(shí)際使用的這一年中箫柳,會(huì)出現(xiàn)很多APP退出的情況,當(dāng)時(shí)也知道在無響應(yīng)的時(shí)候強(qiáng)制結(jié)束應(yīng)用啥供,并不會(huì)觸發(fā)悯恍,想著多優(yōu)化一下,盡量去避免這種問題伙狐。
但是奈何后期出現(xiàn)問題的設(shè)備較多涮毫,也無法去復(fù)現(xiàn),現(xiàn)在打算再回到最初的方式贷屎,不過準(zhǔn)備合成一個(gè)應(yīng)用罢防,寫個(gè)Service去監(jiān)聽,然后設(shè)置個(gè)開關(guān)唉侄,去啟動(dòng)和關(guān)閉咒吐,默認(rèn)開啟,手動(dòng)關(guān)閉后可進(jìn)行調(diào)試,關(guān)閉調(diào)試界面后自動(dòng)開啟
https://blog.csdn.net/behindeye/article/details/85563204 ? 該文章有直接申請權(quán)限的代碼