android - 清除 android Activity 堆栈开始新 Activity

标签 android android-activity stack

我有一个应用程序,每个新创建的 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/

相关文章:

c - 栈内存读取

Android Logcat 不显示时间戳,每行的其他信息

android - 安装 APK INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 时出错 - Android

android - 检查应用程序是否从最近的应用程序或启动器图标恢复

java - 无法启动 Activity ComponentInfo - 二进制 XML 文件行 #8 : Error inflating class <unknown>

function - Postgresql:插入/更新后触发函数:堆栈深度限制错误

android - android中的自定义进度对话框?

java - 如何获取x变量的值?

android - `Content_main.xml` 有什么意义?

c - 来自 Hacking : The Art of Exploitation 的基于堆栈的溢出代码