2015-08-01 2 views
1

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

Я начал строить, но есть что-то, что беспокоит меня ...

Я сделал очень простой образец, чтобы проиллюстрировать то, что я хочу сделать: https://github.com/Kobatsu/fragmentstests

Существует кнопка в действии бар, чтобы изменить основной фрагмент. Каждый фрагмент содержит только TextView с образцом текста.

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

Это не так много, поскольку в каждом фрагменте почти ничего нет, но в моем реальном приложении оно увеличивается больше, и если я поменяю между фрагментами, я могу получить исключение OutOfMemoryException.

Есть ли что-то, что мне нужно для удаления фрагментов из памяти?

ответ

0

Я прочитал ваш код в github, кажется, это хорошо в аспекте памяти. Если ваш фрагмент onDestory() или onDestroyView() вызывается успешно, обычно вам не нужно беспокоиться о памяти.

Это правда, что Fragment создание будет стоить памяти, но когда ваша память увеличение использования до определенного предела, garbage collection или GC будет проверять неиспользуемые объекты кучи и освободить их.

Будьте осторожны, если другие объекты потенциально содержат экземпляр фрагмента: например, прослушиватель регистра в другом потоке или addToBackStack, который хранит фрагмент в стеке.

+0

Даже после сбора мусора, он не возвращается в память приложения, используемого вначале, поэтому, если я продолжаю менять между двумя фрагментами, в какой-то момент у меня будет OOM, я думаю. Почему он не возвращается к первоначальному объему памяти, который он использовал? –

Смежные вопросы