2017-06-20 49 views

回答

3

popBackStack()會彈出返回堆疊,但它不會直到稍晚進行的流行 - 它發佈消息給做,所以你不必須等待重量級操作的發生。

popBackStackImmediate()現在在函數返回之前執行它。它速度較慢,可能會導致性能問題。儘可能使用非即時版本。

0作爲第二個參數意味着使用默認行爲(移除堆棧中的頂層元素)。您也可以將它傳遞給一系列布爾ORed標誌。目前支持的唯一標誌是POP_BACK_STACK_INCLUSIVE,它將其更改爲取出多個片段。

+0

非常感謝你Gabe! – JSON4Live

6

popBackStackImmediate()將在呼叫中立即執行彈出命令。通話結束後可立即覈實結果。由於所有彈出操作都在呼叫中執行,所以速度稍慢。

popBackStack()將在下一個事件循環週期(即下一個繪製階段)內執行彈出命令。所以它與代碼的其餘部分是異步的。這意味着FragmentTransaction而不是執行後,從後臺堆棧中刪除。在大多數情況下,您不需要需要FragmentTransaction立即彈出,所以它會一直等到其他事情完成之後纔會實際發生。所有這些都發生得很快,以至於用戶無法識別它。

最後的標誌是不相關的。它目前只能設置爲POP_BACK_STACK_INCLUSIVEFragmentManager允許您在後臺設置一個ID。如果您設置了該標誌,則會彈出與指定ID匹配的FragmentTransaction,直至出現與ID不匹配或達到底部的ID。如果沒有設置該標誌,則與ID不匹配的所有FragmentTransaction都會彈出,直到達到與ID匹配或到達底部的一個。

+0

非常感謝你DeeV! – JSON4Live