Как освободить память после удаления Activity?

Рейтинг: -4Ответов: 1Опубликовано: 04.01.2015

Как освободить память после удаления Activity? Создал 3 активити с картинками.

1) при запуске первого объем доходит до 20мб, делаю finish(), запускаю 2 активити; 2) 2 активити - память 30мб, делаю finish(), запускаю 3 активити; 3) 3 активити - память 43мб, делаю finish(), запускаю 1 активити; 4) 1 активити - память 48мб.

Я как понял, память увеличивается из-за кеша картинок, как удалить активити и очистить ресурсы, я все понимаю, это сделанно, чтобы можно было быстро переходить с 1 активити на 2. Но если я запускаю 1 активити только один раз за весь цикл жизни проги, мне по-любому надо его полностью очистить, как сделать это?

Да, самое главное:

Image у меня штук по 10-20 в каждом активити, каждый recycle делать это очень гавнокодично будет...

Ответы

▲ 1Принят

Как-то я писал андроид прогу (графический редактор), и была необходимость держать в памяти две картинки для для отмены-возврата действий. Короче говоря, при открытии новой картинки, память оказывалась забитой. Приходилось вызывать метод recycle для моих старых картинок. Вроде помогло. Единственное ограничение - это была куча (на каждом телефоне размер свой), следовательно пришлось ловить исключение нехватки памяти. Так что, если у тебя работа с БОЛЬШИМИ картинками, попробуй вызывать recycle. БОЛЬШИМИ я имею в виду разрешение около 1к * 1к.

P.S. Не помню, знатоки подскажите - команда GC обязует JVM выполнить сборщик мусора или это рекомендация на запуск сборщика (но не обязанность)?