android - 如何清除 API 8 中 Stack 中的所有 Activity?

标签 android android-intent android-activity

我正在开发一个遵循层次结构的应用程序,有一个用户可以登录的选项,之后我将完成登录 Activity 。现在,一旦用户登录,我就会带他去一个新的 Activity ,假设是“Activity A”。从这个 Activity 开始,一个名为“Activity B”的新 Activity 再次开始,但没有完成“Activity A”。最后还有一个名为“Activity C”的最后一个 Activity,它从“Activity B”开始,但没有完成“Activity B”。所以目前这三个 Activity 都是堆栈。

现在,每个屏幕或 Activity 都有一个名为注销的选项,如果用户在“Activity A”上,我只是完成 Activity 并打开登录 Activity 。对于这种情况,它工作正常但是一旦我切换到“Activity B”或“Activity C”,然后如果用户按注销,我应该怎么做才能删除堆栈中的所有 Activity ,而且我必须像我一样打开登录 Activity 登录成功完成。

我知道 API 11 中有一个 FLAG,我们可以使用它清除堆栈中的所有 Activity :-

Intent i = new Intent(mContext, LoginGateway.class);
// set the new task and clear flags
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(i);

但我从 API 8 开始支持它。我想要一个可以用于 API 8 之后的解决方案,请帮我找出答案。 任何帮助将不胜感激。谢谢。

最佳答案

Intent intent = new Intent(activity, LoginGateway.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
activity.startActivity(mainIntent);

关于android - 如何清除 API 8 中 Stack 中的所有 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23357029/

相关文章:

android - 从 bundle 中删除条目(即附加内容)似乎无法与后退按钮结合使用

android - 单选按钮 Activity 源代码

java - 如何在 Android 中更改 Activity 时停止 MediaPlayer

android - 当我运行 apk 但不是从 Android Studio 运行时出现错误

android - Intent.category.BROWSABLE : set visibility to external applications

android - JsonArray 作为空字符串解析问题与改造

java - 最小化应用程序android

java - 使用条件在 Activity 之间传递数据

android - 没有启用 "Auto-Rotate Screen"就不能使用反向纵向

android - 旧 Android API 上的 Apple 风格 AlertDialog