[英]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.