Android 如何启动一个新的意图,以清除所有其他活动?

Android 如何启动一个新的意图,以清除所有其他活动?,android,android-intent,back-stack,Android,Android Intent,Back Stack,尽可能简单地把它摆出来。我的用户通过活动A进入应用程序。他们“登录”,然后启动活动B,然后使用finish()完成活动A,这样用户就无法通过按活动B返回登录屏幕。现在在活动B中,他们移动到活动C,在活动C中,我希望他们启动一个新的意图,该意图将启动活动A,但“杀死”/“完成”所有其他活动。我能想到的唯一方法是使用意图标志。到目前为止,我已经想到了: Intent intent = new Intent(getActivity(), ActivityA.class); intent.setFlag

尽可能简单地把它摆出来。我的用户通过活动A进入应用程序。他们“登录”,然后启动活动B,然后使用finish()完成活动A,这样用户就无法通过按活动B返回登录屏幕。现在在活动B中,他们移动到活动C,在活动C中,我希望他们启动一个新的意图,该意图将启动活动A,但“杀死”/“完成”所有其他活动。我能想到的唯一方法是使用意图标志。到目前为止,我已经想到了:

Intent intent = new Intent(getActivity(), ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(intent);
但是上面的代码不起作用。我仍然看到我的应用程序在活动B中有一个savedInstanceState。因此类似CLEAR_TASK的东西对我来说不起作用

编辑:还有,有没有一种简单的方法来判断你的应用程序当前打开了多少“任务”

注意:似乎还有其他标志可能会有所帮助,但它们是在API11中添加的,我需要支持API10

我尝试过的旗帜组合:

不起作用

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
不起作用

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

您需要使用
IntentCompat
。如

import android.support.v4.content.IntentCompat;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);

检查以下答案是否有助于您:

尝试在开始活动(意图)后完成当前活动;嗯。我不知道有意向比较。太好了!最后一件事…你知道我有什么方法可以确保我的旧任务被清除吗?我觉得这个意向是在清除新任务?我认为它应该工作得很好,正如文档中提到的。当然,你可以测试你的应用程序。如果你发现任何问题,我们可以讨论谢谢你的链接。Alt尽管这似乎是一种“黑客”的方式。如果没有其他人能帮我找到解决方案,我会记住这一点。谢谢