请问有人能告诉我
非常感谢大家的帮助...
popBackStackImmediate
和popBackStack
之间的区别吗?我真的不明白,此外在第二个popBackStack
中的"flag" 0(零)是什么意思?非常感谢大家的帮助...
popBackStackImmediate
和popBackStack
之间的区别吗?我真的不明白,此外在第二个popBackStack
中的"flag" 0(零)是什么意思?popBackStackImmediate()
会在调用时立即执行弹出命令,并可以在调用后立即验证结果。由于所有弹出操作都在调用中执行,因此速度略慢。
popBackStack()
将在下一个事件循环周期(即下一个绘制阶段)内执行弹出命令。因此它与其他代码异步执行。这意味着在执行此操作后,FragmentTransaction
不会从返回堆栈中移除。在大多数情况下,您不需要立即弹出FragmentTransaction
,所以它会等待直到所有其他操作完成后再实际发生。所有这些都发生得非常快,用户几乎察觉不到。
结尾处的标志与前面内容无关。它目前只能设置为POP_BACK_STACK_INCLUSIVE。 FragmentManager
允许您在返回堆栈上设置ID。如果设置了标志,则它将弹出与指定ID匹配的FragmentTransaction
,直到达到不匹配ID的事务或到达底部。如果未设置标志,则弹出所有不匹配ID的FragmentTransaction
,直到达到匹配ID的事务或到达底部。
popBackStack()
函数会弹出后退栈,但不会立即执行,而是发送一条消息来执行,因此您无需等待繁重的操作。
popBackStackImmediate()
会在函数返回之前立即执行。 这样做速度较慢并可能导致性能问题。 如果可能,应使用非即时版本。
第二个参数为0表示使用默认行为(删除后退栈中的顶部元素)。 您还可以将其传递给一系列布尔OR标志。 目前仅支持一个标志POP_BACK_STACK_INCLUSIVE,它会更改为删除多个片段。