ChildFragmentManager - фрагменты не удаляются из FragmentManager, и куча увеличивается - PullRequest
0 голосов
/ 04 октября 2018

У меня есть фрагмент, который переключает фрагменты внутри своего макета.Я использую 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, и память, занятая экземпляром фрагмента, будет освобождена.К сожалению, в отладчике я вижу мгновенный прирост памяти.Кроме того, список FragmentManager.mActive содержит все добавленные фрагменты - они сохраняются, а не освобождаются.Фрагменты не сохраняются - я не устанавливаю этот флаг.

Увеличение памяти во время фрагмента Активность выглядит следующим образом: enter image description here

Есть у кого-нибудьесть идеи, в чем может быть проблема?

...