在 FragmentTransaction 中,什么时候应该调用 setReorderingAllowed() 方法?

8
在Google I/O 2017的一次讲座中(此处),演讲者介绍了一个新的API用于setReorderingAllowed(),它可以在FragmentTransaction上调用。
演讲者解释道:

它允许所有执行一次性完成,而不改变您的片段状态,然后在最后我们提升所有需要提升的片段并拆除所有需要拆除的片段...所以我们可以为您优化。

并展示了以下代码示例:
fragmentManager.beginTransaction()
    .replace(R.id.container, fragment1)
    .addToBackStack("state1")
    .setReorderingAllowed(true)
    .commit();

fragmentManager.beginTransaction()
    .replace(R.id.container, fragment2)
    .addToBackStack("state2")
    .setReorderingAllowed(true)
    .commit();

如果单独提交FragmentTransaction,是否会使得.setReorderingAllowed(true)的优化失效?因为它们是分别发生的。

由于这是一个刚刚公布的API,目前似乎还没有可用的文档。


方法setAllowOptimization在API级别26.0.0-beta2中已被弃用,并更名为setReorderingAllowed(boolean)。现在文档也已经可用。 - Wahib Ul Haq
1个回答

1
我相信他们提到的方法已经存在于支持库25.1.0中,但目前被称为setAllowOptimization(true)文档明确说明“优化事务内部和跨越事务的操作”,因此它将优化不同的事务。

方法setAllowOptimization已在API级别26.0.0-beta2中被弃用,并已更名为setReorderingAllowed(boolean)。现在也提供了文档。 - radley
需要澄清的是:我从未说过任何人应该使用 setAllowOptimization()。我明确指出这是同一方法的旧名称,并引用了关于该方法的文档来回答问题。 - BladeCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接