簡體   English   中英

清除 android 活動堆棧開始新活動

[英]Clear android activity stack starting a new activity

我有一個應用程序,每個新創建的活動都會啟動一個異步任務來驗證用戶 session。如果 session 有效,應用程序流程將繼續。 如果不是,則必須清除整個活動堆棧,並且應該只有登錄活動。 此活動有一個“無歷史記錄”標志,因此它永遠不會保留在堆棧中。

我一直在嘗試這里提供的一些解決方案: Android:清除活動堆棧但沒有成功。

這必須適用於最低的 android 可能,至少 2.2

謝謝!

我將我的登錄活動保存在堆棧中。 在登錄 Activity 的 onResume() 中,我檢查用戶是否有登錄憑據,如果有,則為登錄后顯示的下一個屏幕調用 startActivity。 在這種情況下,用戶看不到登錄屏幕。

當用戶按下注銷按鈕時,我會清除用戶的憑據,然后這會清除堆棧,一直返回到登錄屏幕:

    Intent intentLaunchLogin = new Intent(this, ActivityLogin.class);
    intentLaunchLogin.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intentLaunchLogin);

此外,如果用戶在登錄后顯示的屏幕上按下“后退”按鈕,我不希望他們使用 go 登錄 Activity。 此代碼將按預期將用戶發送到主屏幕:

moveTaskToBack(true);

你能做一些像這里描述的事情嗎:

http://blog.janjonas.net/2010-12-20/android-development-restart-application-programmatically

基本上你創建一個啟動你的意圖的警報,然后你完全關閉你的應用程序。

這就是我一直在做的事情,而且效果很好。 我用主要活動啟動應用程序檢查用戶是否登錄,如果他沒有登錄啟動登錄活動這樣

void launchLoginActivity(){
 /* Move user to LoginActivity, and remove the backstack */
    Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
    finish();
}

它不允許你返回 go

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM