我有一个应用程序,每个新创建的 Activity 都会启动一个异步任务来验证用户 session 。如果 session 有效,应用程序流程将继续。如果不是,则必须清除整个 Activity 堆栈,并且应该只有登录 Activity 。此 Activity 有一个“无历史记录”标志,因此它永远不会保留在堆栈中。
我一直在尝试这里提供的一些解决方案:Android: Clear Activity Stack但没有成功。
这必须适用于尽可能低的 android,至少是 2.2
谢谢!
最佳答案
我将我的登录 Activity 保存在堆栈中。在登录 Activity 的 onResume() 中,我检查用户是否有登录凭据,如果有,则为登录后显示的下一个屏幕调用 startActivity。在这种情况下,用户看不到登录屏幕。
当用户按下注销按钮时,我会清除用户的凭据,然后这会清除所有返回登录屏幕的堆栈:
Intent intentLaunchLogin = new Intent(this, ActivityLogin.class);
intentLaunchLogin.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intentLaunchLogin);
此外,如果用户在登录后出现在屏幕上并按下“后退”按钮,我不希望他们转到登录 Activity。此代码将按预期将用户发送到主屏幕:
moveTaskToBack(true);
关于android - 清除 android Activity 堆栈开始新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047758/