簡體   English   中英

popBackStackImmediate與popBackStack之間的區別

[英]difference between popBackStackImmediate vs popBackStack

有人可以告訴我popBackStackImmediatepopBackStack之間的區別嗎? 我真的不明白,而且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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM