可能有人请告诉我之间的差异popBackStackImmediate和popBackStack?我真的没有得到它,另外什么是"标志"0(零)意味着在第二popBackStack?
非常感谢你的帮助...
Dee*_*eeV 22
popBackStackImmediate()将在通话中立即执行弹出命令.结果可以在通话后立即验证.由于所有弹出操作都在调用中执行,因此速度稍慢.
popBackStack()将在下一个事件循环周期(即下一个绘制阶段)内执行弹出命令.所以它与其余代码异步.这意味着FragmentTransaction将不会就执行后,从堆栈中删除.在大多数情况下,你并不需要的FragmentTransaction立即弹出,所以它等待,直到它实际发生之前,一切就结束了.所有这些都发生得如此之快以至于用户无法识别它.
最后的旗帜是无关的.它目前只能设置为POP_BACK_STACK_INCLUSIVE.将FragmentManager允许您在返回堆栈中设置一个ID.如果设置了标志,那么它将弹出与FragmentTransaction指定ID匹配的标志,直到有一个与ID不匹配或达到底部.如果未设置该标志,则FragmentTransaction弹出与ID不匹配的所有s,直到到达与ID匹配或达到底部的一个.
Gab*_*han 10
popBackStack() 将弹出后台堆栈,但它不会执行弹出,直到稍晚 - 它发布一条消息,这样你就不必等待重量级操作发生.
popBackStackImmediate()在函数返回之前立即执行.它较慢并且可能导致性能问题.尽可能使用非立即版本.
0作为第二个参数意味着使用默认行为(删除backstack中的顶部元素).您还可以传递一系列布尔ORed标志.当前支持的唯一标志是POP_BACK_STACK_INCLUSIVE,它会将其更改为取出多个片段.
| 归档时间: |
|
| 查看次数: |
13976 次 |
| 最近记录: |