SingleTop啟動(dòng)模式真的可以防止多次打開(kāi)棧頂?shù)腁ctivity么

SingleTop啟動(dòng)模式真的可以防止多次打開(kāi)棧頂?shù)腁ctivity么


首先要知道什么是singleTop?

有新的頁(yè)面啟動(dòng)請(qǐng)求時(shí),當(dāng)目標(biāo)Activity處于當(dāng)前棧頂時(shí),會(huì)調(diào)用Activity的onNewIntent()方法,但不創(chuàng)建新實(shí)例。如果棧頂沒(méi)有目標(biāo)Activity則創(chuàng)建。

實(shí)際操作:

? ? 先在AndroidManifest.xml中將目標(biāo)activity中的屬性launchMode設(shè)置成singleTop,然后在activity中設(shè)置onClick事件。

圖1

圖1中點(diǎn)擊事件確實(shí)可以防止手動(dòng)連續(xù)多次點(diǎn)擊,跳轉(zhuǎn)頁(yè)面。

但是,如果在代碼中多次跳轉(zhuǎn)頁(yè)面呢:

圖2

圖2中,如果是程序執(zhí)行的多次跳轉(zhuǎn)同一個(gè)目標(biāo)頁(yè)面,startActivty無(wú)法反映過(guò)來(lái),還沒(méi)來(lái)得及判斷目標(biāo)頁(yè)面是否是singleTop的啟動(dòng)模式,就已經(jīng)跳轉(zhuǎn)過(guò)去了??赡苁谴a比xml屬性更先執(zhí)行(具體情況可以了解下startActivty啟動(dòng)的流程)。所以可以用以下方法來(lái)解決這種問(wèn)題:

圖3

在intent中設(shè)置flag,這樣就保證了,只會(huì)有一個(gè)。

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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