【问题标题】:Android Activity Flow FLAG_ACTIVITY_CLEAR_TOPAndroid 活动流 FLAG_ACTIVITY_CLEAR_TOP
【发布时间】:2013-08-06 21:59:44
【问题描述】:

如果我有一个启动 Activity B 的 Activity A 启动 Activity A 的不同实例,我想回到前一个 Activity A(后堆栈中的第一个),所以我尝试使用意图标志 FLAG_ACTIVITY_CLEAR_TOP,但当然这会将顶部活动识别为正在运行的实例,而不是第一个。如何摆脱 Activity A 和 Activity B 的第二个实例以恢复我的会话回到第一个 Activity A?

A->B->A->回到第一个A,完成第二个A&B。

我的目标是 API 级别 10。

【问题讨论】:

  • 可能有更好的方法。如果您确切地告诉我们您想要完成什么或为什么,那么也许我们可以帮助您找到更好的方法。

标签: android android-activity


【解决方案1】:

您可以尝试在活动 B 启动活动 A 的第二个实例时设置 FLAG_ACTIVITY_NO_HISTORY。不能保证,但它可能会起作用。

当然,如果活动 B 正在合作,您可以从 A 的第二个实例返回一个 B 可以识别并立即完成()本身的状态。但是,如果您有 A->B->C-A,那并不能真正解决问题。

【讨论】:

  • 谢谢,这确实有效,但是在从文档中读取了更多标志值之后, FLAG_ACTIVITY_PREVIOUS_IS_TOP 绝对适合我的情况,但是,它根本不像文档描述的那样工作。这篇文章中讨论了实现问题justanapplication.wordpress.com/tag/…
【解决方案2】:

试试这些标志:

addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );

来自FLAG_ACTIVITY_CLEAR_TASK 的文档:

...此标志将导致与该活动相关联的任何现有任务在活动开始之前被清除。也就是说,该活动成为其他空任务的新根,所有旧活动都已完成。这只能与 FLAG_ACTIVITY_NEW_TASK 结合使用。

请注意,它不仅会清除活动,还会创建一个全新的任务。例如,如果活动 A 不是您的“家庭”活动,这可能并不理想。

【讨论】:

  • 这是我的希望,不幸的是 FLAG_ACTIVITY_CLEAR_TASK 被添加到 API Level 11,我的目标是 API Level 10。
  • 很高兴知道。您可能希望将其添加到问题中,以便更明显。
【解决方案3】:

您可以通过设置标志 FLAG_ACTIVITY_SINGLE_TOP 来尝试。否则,您将需要自己监控您的活动,并在需要时前往需要的地方。

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2016-06-30
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多