Android退出登錄,清空原任務(wù)棧

在項(xiàng)目中要實(shí)現(xiàn)用戶退出登錄的功能,當(dāng)用戶點(diǎn)擊退出登錄按鈕后,跳轉(zhuǎn)到登錄頁面的 Activity ,直接用 startActivity() 跳轉(zhuǎn),點(diǎn)擊返回鍵后仍會(huì)回到退出前的 Activity 。

如果使用下面這句代碼給 intent 設(shè)置 Flag

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

在第一次登錄時(shí)有效,因?yàn)橛脩舻谝淮蔚卿洉r(shí)會(huì)在登錄頁面輸入賬號(hào)密碼進(jìn)行登錄,然后跳轉(zhuǎn)到主頁面。這樣在退出登錄時(shí),會(huì)回到之前經(jīng)過的登錄 Activity ,任務(wù)棧會(huì)將登錄頁面
Activity 之上的 Activity 全部清空,按返回鍵不會(huì)回到主頁面。
但是在用戶已經(jīng)登錄過之后,由于賬號(hào)密碼已經(jīng)保存,不需要再次輸入進(jìn)行登錄,不會(huì)經(jīng)過登錄 Activity , 這樣在退出登錄后按返回鍵仍會(huì)返回到主頁面。

使用 FLAG_ACTIVITY_CLEAR_TASK , FLAG_ACTIVITY_NEW_TASK 即可解決。代碼如下:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
注意是 addFlags() 不是 setFlags()

谷歌官方文檔提到, Intent.FLAG_ACTIVITY_CLEAR_TASK 要起作用,必須和 Intent.FLAG_ACTIVITY_NEW_TASK 配合使用。
這兩個(gè) Flag 可以將原有任務(wù)棧清空,并將 intent 的目標(biāo) Activity 作為任務(wù)棧的根 Activity 。任務(wù)棧的 Id 沒有變,如下所示,也就是說,并沒有開辟新的任務(wù)棧。

I/得到TaskId: 19959
I/得到TaskId: 19959
最后編輯于
?著作權(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)容