[英]difference between popBackStackImmediate vs popBackStack
有人可以告訴我popBackStackImmediate
和popBackStack
之間的區別嗎? 我真的不明白,而且popBackStack
2nd中的“標志” 0(零)是什么popBackStack
?
非常感謝您的幫助...
popBackStackImmediate()
將在調用中立即執行彈出命令。 通話后可以立即驗證其結果。 由於所有彈出操作都是在呼叫內執行的,因此速度稍慢。
popBackStack()
將在下一個事件循環周期(即下一個繪制階段)內執行彈出命令。 因此,它與其余代碼是異步的。 這意味着FragmentTransaction
在執行后不會從后堆棧中刪除。 在大多數情況下,你不需要 FragmentTransaction
立即彈出,所以它等待,直到它實際發生之前,一切就結束了。 這一切發生得如此之快,以至於用戶無法識別。
末尾的標志無關。 當前只能將其設置為POP_BACK_STACK_INCLUSIVE 。 FragmentManager
允許您在后堆棧上設置ID。 如果設置了該標志,則它將彈出與指定的ID匹配的FragmentTransaction
,直到出現一個與ID不匹配或到達底部的ID。 如果未設置該標志,那么將彈出所有與ID不匹配的FragmentTransaction
,直到達到與ID匹配的底部或到達底部為止。
popBackStack()
將彈出堆棧,但直到稍后才執行彈出操作-它會發布一條消息來執行此操作,因此您不必等待重量級的操作發生。
popBackStackImmediate()
在函數返回之前立即執行此操作。 它的速度較慢,可能會導致性能問題。 盡可能使用非立即版本。
0作為第二個參數表示使用默認行為(刪除后堆棧中的頂部元素)。 您還可以向其傳遞一系列布爾ORed標志。 當前唯一支持的標志是POP_BACK_STACK_INCLUSIVE ,它將更改為取出多個片段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.