ChildFragmentManager-不会从FragmentManager中删除片段,并且堆会增长

时间:2018-10-04 16:48:51

标签: android android-fragments fragmenttransaction

我有一个片段,可以在其布局内切换片段。我使用ChildFragmentManager。替换片段的代码是:

FragmentManager fm = getChildFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();

Fragment oldFragment = fm.findFragmentByTag(TEST_ITEM_FRAGMENT_TAG);
if (oldFragment != null) {
  fragmentTransaction.remove(oldFragment);
}

fragment = createNewFragment();
fragmentTransaction.replace(R.id.container, fragment, TEST_ITEM_FRAGMENT_TAG);
fragmentTransaction.commitNow();

显示的片段非常昂贵-它们包含位图。 我认为,该事务将从FragmentManager中删除任何以前的fragment实例,而该fragment实例所占用的内存将被释放。不幸的是,我在调试器中看到的是内存的即时增长。另外,FragmentManager.mActive列表包含所有已添加的片段-它们将保留而不是释放。 片段不会保留-我没有设置此标志。

片段活动出现期间的内存增长如下: enter image description here

有人知道这个问题可能是什么吗?

0 个答案:

没有答案