为什么总是newInstance或片段的对象

时间:2016-07-31 16:42:27

标签: java android fragment instance back-stack

我需要知道为什么我们总是使用A.newInstance()或A()来实例化片段的新对象,如果我们知道已存在实例的话。它不会增加Android中应用程序的内存使用量吗?

在我的情况下,我有一个活动和多个片段,由抽屉片段中的菜单打开。这些片段还可能会打开抽屉菜单中未列出的其他片段。所以我想知道每次按顶部片段创建二级片段的新实例是否正常。顶级片段也是如此。我的流程解释如下:

  1. 片段A(新实例第一次)
  2. 片段B(较低级别片段/新实例,由A实例化)
  3. 返回A(按向上箭头)
  4. 片段B(较低级别片段/再次新实例,由A实例化)
  5. 返回A(按向上箭头)
  6. 片段X(新实例第一次/顶级片段/来自抽屉菜单)
  7. 片段A(再次是A /顶级片段的新实例/来自抽屉菜单)
  8. 有多个片段A(顶级/第7点)和B(较低级别/第4点)的实例是否正确?当我使用这个策略?

1 个答案:

答案 0 :(得分:0)

每当你在页面之间切换时,你就不应该实例化新的片段"

你需要add使用标签(可选的字符串参数)将它们放入FragmentManager,然后使用该标签(findFragmentByTag)找到它们,并replace当前显示的片段如果你能找到另一个。否则,您可以实例化一个新的。

我认为你还需要将碎片放在后面的堆栈(addToBackStack)上,所以它们被FragmentManager保留了