【问题标题】:Clear Activity backstack清除 Activity 后台堆栈
【发布时间】:2012-09-12 16:06:49
【问题描述】:

我有一个类似这样的应用程序结构:

1 Activity

nFragments

App 流程是这样的:

(Activity 1)(Fragment A) => (Activity 1)(Fragment B) => (Activity 1)(Fragment C) => ...

因此,单个活动类的多个实例被实例化,其中包含不同的片段。

另外,当我在 Fragment B 中时(假设),我使用 Fragment B' 对 replace 它进行了一个片段事务,因此没有创建新的 Activity,并且 Fragment B 被 Fragment B' 替换。

现在,在此事务中,我希望包含 Fragment A 的 Activity 和所有其他先前启动的 Activity 弹出 backstack。

Intent 标志可用于(CLEAR_TOP)打开根活动,但这里我正在做一个FragmentTransaction 并想清除此事件的活动回栈。

有什么帮助吗?

如何在不使用 FLAG_ACTIVITY_CLEAR_TOP 的情况下清除活动回栈,因为我没有在这里进行 Intent 调用?

【问题讨论】:

    标签: android android-intent fragment


    【解决方案1】:

    您可以在他的类中存储对活动 A 的静态引用。当您需要从历史记录中删除 A 时,您只需调用 ActivityA.getInstance().finish();

    如果您在 A 活动上有多个实例,则将对它的引用放入 Vector 并使用 ActivityA.getInstance(0).finish() 完成;

    【讨论】:

    • 不!保持对 Activity 上下文的静态引用,现在不做内存泄漏,如果有一个 API 方法会更好。
    • 您可以将 WeakReference 存储到您的活动实例中。可能是之前的泄漏。 Vector> 实例;
    • 我不知道这种方法。在我的实践中,我使用一个活动和很多片段。
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多