安卓開發(fā)保持應(yīng)用在最上層

目前做的項(xiàng)目都是在安卓板上使用的,需要一直保持應(yīng)用在最頂層

最早的邏輯是判斷RunningTask,那時候用的安卓板還是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)時因?yàn)闀r間倉促,所以也沒有細(xì)心研究,是修改的老代碼,那時候是單獨(dú)一個應(yīng)用,雖說能保證了指定應(yīng)用永遠(yuǎn)處于最上層,但是設(shè)備配置和維護(hù)就比較麻煩,第一是要安裝兩個應(yīng)用,第二無障礙輔助需要手動去設(shè)置(可以查找到自動申請的代碼),第三想跳出應(yīng)用改個設(shè)置都很麻煩,設(shè)置的間隔時間很短,長了又容易出問題。

所以后來在重構(gòu)項(xiàng)目的時候,就沒再考慮這種方式,用了下面的方法

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){});

可以抓到程序因異常導(dǎo)致關(guān)閉的情況,就想著在這里進(jìn)行重啟應(yīng)用,就省掉了之前用來檢測的應(yīng)用

一開始感覺基本能滿足,但是在實(shí)際使用的這一年中,會出現(xiàn)很多APP退出的情況,當(dāng)時也知道在無響應(yīng)的時候強(qiáng)制結(jié)束應(yīng)用,并不會觸發(fā),想著多優(yōu)化一下,盡量去避免這種問題。

但是奈何后期出現(xiàn)問題的設(shè)備較多,也無法去復(fù)現(xiàn),現(xiàn)在打算再回到最初的方式,不過準(zhǔn)備合成一個應(yīng)用,寫個Service去監(jiān)聽,然后設(shè)置個開關(guān),去啟動和關(guān)閉,默認(rèn)開啟,手動關(guān)閉后可進(jìn)行調(diào)試,關(guān)閉調(diào)試界面后自動開啟

https://blog.csdn.net/behindeye/article/details/85563204 ? 該文章有直接申請權(quán)限的代碼

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

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