Память, сохраненная фрагментом

#android #android-fragments

#Android #android-фрагменты

Вопрос:

Когда я вызываю popBackStack подобное:

 manager.popBackStack("mybackstack", FragmentManager.POP_BACK_STACK_INCLUSIVE);
  

будет ли освобождена память, сохраненная фрагментами, принадлежащими «mybackstack»?

У меня есть a FragmentActivity , который управляет a ListFragment . Каждый раз, когда я нажимаю на элемент, FragmentActivity создается экземпляр new Fragment , который показывает некоторую информацию о нажатом элементе, а затем показывает a DialogFragment с растровым изображением (которое я перерабатываю, когда диалоговое окно закрывается). Я помещаю android:configChanges="orientation" в манифест и переопределяю onConfigurationChanged по мере необходимости.

Комментарии:

1. Я где-то читал, что сайт разработчиков не упомянул эту информацию в FragmentManager документации и что она была обновлена только недавно. Возможно, именно поэтому ваш вопрос так долго оставался без ответа :).

Ответ №1:

Да, память, сохраненная фрагментами, будет освобождена. Из документации,

общедоступный статический конечный результат POP_BACK_STACK_INCLUSIVE

Флаг для popBackStack(String, int) и popBackStack(int, int): Если установлено, и указано имя или идентификатор записи заднего стека, то все совпадающие записи будут использоваться до тех пор, пока не будет найдена та, которая не соответствует, или не будет достигнута нижняя часть стека. В противном случае все записи до этой записи, но не включая ее, будут удалены.

и,

общедоступный абстрактный пустой popBackStack (имя строки, флаги int)

Извлеките последний переход фрагмента из стека фрагментов менеджера. Если нечего всплывать, возвращается false . Эта функция асинхронна — она помещает запрос в очередь на pop, но действие не будет выполнено, пока приложение не вернется к своему циклу событий.

Однако обратите внимание, что нет гарантии, что эта память будет немедленно освобождена.