Что происходит, когда фрагмент вызывается из backstack? - PullRequest
0 голосов
/ 05 января 2019

У меня есть фрагмент контейнера. Я загружаю фрагмент внутри него. Когда я хочу загрузить новый фрагмент, я использую этот код

FragmentTransaction ft=activity.getSupportFragmentManager().beginTransaction();
                    ft.add(R.id.mainframe,new_fragment_here).hide(getCurrentFragment()).addToBackStack(null).commit();

Я спрашиваю, когда я скрываю фрагмент, может ли он быть удален сборщиком мусора, когда памяти меньше?

И когда я хочу вернуться к старому фрагменту, я просто использую getFragmentManager().popBackStack();

Когда я использую этот код, мой фрагмент и его изображения или видео постоянно уничтожаются?

Причиной такого использования является нехватка памяти?

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

1 Ответ

0 голосов
/ 05 января 2019

Я полагаю, что вы пытаетесь спросить о жизненном цикле фрагмента и о том, как GC работает с фрагментом в бэк-стеке.

По моим наблюдениям и знаниям, когда вы добавляете Фрагмент в backstack, тогда Фрагмент находится в оперативной памяти устройства, но, если заданий много (Фрагмент) живым, тогда GC может сделать принудительное уничтожение фрагмента в зависимости от необходимости.

Для лучшего понимания жизненного цикла фрагмента и того, что происходит с фрагментом в Backstack, см. Эту блок-схему.

Эта диаграмма может быть немного сложной, но она поможет вам понять, как работает фрагмент.

ПРИМЕЧАНИЕ: когда вы извлекаете / заменяете фрагмент, тогда сам фрагмент уничтожается, вы можете проверить его, сохранив точку останова на onDestroy() фрагмента.

Fragment lifeCycle

Если изображение недоступно, см. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...