清除片段后栈编程

Ore*_*est 3 android fragment

清除片段后栈编程的最佳方法是什么?

我只使用一个活动和一组片段实现了屏幕导航.我想有一个方法将用户带到登录屏幕(当注销超时到期时)并清除所有片段历史记录,最好的方法是什么?我在这里找到的答案很少但我不知道哪个是最好的...提前谢谢!

目前我正在使用这个

public void clearBackStack() {
    FragmentManager fragmentManager = holder.getSupportFragmentManager();

    while (fragmentManager.getBackStackEntryCount() != 0) {
        fragmentManager.popBackStack(null, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,有时我会出现OutOfMemoryException

Reg*_*itz 11

这是一个非常古老的问题.无论如何,我尝试了你的代码,看起来你有一个无限循环.

popBackStack(null, 0)搜索具有null标记的片段,该片段永远不会被找到.while循环将循环直到内存耗尽.另一个问题popBackStack是pop不一定立即执行,因此while循环可能会运行一段时间.

如果要删除后端堆栈中的碎片而不管标记或ID,请fragmentManager.popBackStackImmediate()改用.