安卓SDK33 點擊桌面圖標重復創(chuàng)建開屏頁面

項目里面碰到一個很奇怪的問題,用戶第一次從安裝鏈接下載APP,打開APP的時候,然后把APP放到后臺,然后再從桌面進入APP,APP一直卡在開屏頁面,然后返回又到了之前的頁面里面了。但是又存在一個問題,通過adb命令安裝的時候,就不會出現(xiàn)這個問題。那這個原因是出在哪里呢?今天空閑我就研究一下

? ? 先思考一個問題,為什么adb命令安裝和直接下載安裝會有這種區(qū)別?

adb命令:adb命令相當于把apk包放到了安卓目錄下的data/app目錄里面

直接安裝:通過安卓的installer程序進行安裝app

那同樣都是安裝apk,為什么會出現(xiàn)這種問題呢?

桌面launcher的打開與Installer打開的不同

而installer的打開在com.android.packageinstaller.installappprogress

兩者的不同在于installappprogress多了一個intent.setPackage(packageName)。

那為什么多了一個intent.setPackage(packageName)會再此打開時導致多了Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT


FLAG_ACTIVITY_BROUGHT_TO_FRONT是如何產(chǎn)生的:

關(guān)鍵在于?curTop.task != lastStack.topTask()

這個地方我估摸著是因為packageName會影響到task,他會額外增加一個flag,這樣子會給頁面屬性增加這個flag,這也導致了為什么會在點開圖標重復彈出開屏頁面。

那怎么解決呢?

if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)> 0) {

/**為了防止重復啟動多個閃屏頁面**/

finish();

return;

}

就是判斷當前頁面是處于棧頂位置,是的話就finish掉activity,而且并且是要放在onCreate前面,在繪制view之前就finish掉

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

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

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