我们的应用程序中有多个屏幕,要在它们之间切换,我们使用FragmentTransactions,主要是替换,我们在后台添加片段到后台堆栈。在这样做的同时,我们保持在相同的MainActivity中。
因此,如果我们通过某个按钮从片段A转换到片段B,我们现在有一个看起来像
的堆栈乙 甲
如果我们转到另一个片段C,它会像堆栈一样位于堆栈顶部
Ç 乙 甲
但是,有时我们会转换到片段D,这样我们就想要消除后台堆栈,这样用户就无法再通过C,B,A导航回来了。我们现在想要导航到D后面的背板看起来像这样
d
但为了做到这一点,我们需要使用以下方法清除背斜:
FragmentManager supportFragmentManager = getActivity().getSupportFragmentManager();
while(supportFragmentManager.getBackStackEntryCount() > 0)
{
supportFragmentManager.popBackStackImmediate();
}
clearingBackStack = false;
但是当我们这样做时,会调用片段C,B和A的onResume。这不是我们想要的功能,可能会产生负面影响,例如进行不必要的服务器调用。我们还注意到在低端设备上,当它们从堆栈中脱落时,我们会看到弹出的碎片的闪光。
我们希望避免这种行为,有没有办法在没有激活弹出片段的情况下弹出整个片段backstack?