【问题标题】:How to start a new Intent that will clear all other activities?如何启动一个将清除所有其他活动的新意图?
【发布时间】:2014-03-05 19:17:18
【问题描述】:

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

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);

但是上面的代码不起作用。我仍然看到我的应用在 Activity B 中有一个 savedInstanceState。因此像 CLEAR_TASK 这样的东西对我来说不起作用。

编辑:另外,有没有一种简单的方法来判断您的应用当前打开了许多“任务”?

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

我尝试过的标记组合:

不起作用

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);

【问题讨论】:

    标签: android android-intent back-stack


    【解决方案1】:

    您需要使用IntentCompat。喜欢

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

    【讨论】:

    • 尝试在startActivity(intent)之后完成当前活动;
    • 嗯。我不知道有 IntentCompat。伟大的!最后一件事......你知道我可以确保我的旧任务被清除的任何方法吗?我觉得这个意图是清除新任务?
    • 我认为它应该可以正常工作,如文档 developer.android.com/reference/android/content/Intent.html 中所述。当然,您可以测试您的应用程序。如果您发现任何问题我们可以讨论
    【解决方案2】:

    【讨论】:

    • 感谢您的链接。尽管这似乎是一种“hacky”方式。如果没有其他人可以帮助我找到解决方案,我会记住这一点。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多