Как очистить растровые ресурсы - PullRequest
4 голосов
/ 11 июня 2011

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

Вопрос в том, «как очистить растровый ресурс ImageView после его использования, чтобы у нас не было ссылокв память? ".

Вот пример:

  1. Экран 1 перенаправляет на экран 2
  2. Экран 2 содержит элемент управления A (предварительный просмотр большого фото)
  3. Элемент управления A содержит ImageView B
  4. Настройка ImageView B устанавливается при запуске элемента управления A

В первый раз все работает нормально.Как только элемент управления завершен, я перенаправляю с экрана 2 на экран 1. На этом этапе все ссылки на элемент управления A или ImageView B или растровое изображение, которые он использует, должны быть недействительными.ОНИ НЕ !!!

Я пробовал все виды решений, включая bitmap.recycle (), добавление finalize () в Control A, System.gs () и обнуление элемента управления в различных местах, таких как onStop () и onDestroy (), и все остальное, что на экране 2, ничего не работает!

Проблема в том, что, когда я снова посещаю экран, переходя с экрана 1 на экран 2 (т. Е. Снова создавая предварительный просмотр фотографии), я получаю исключение из памяти.Насколько я понимаю, ссылка на предыдущее растровое изображение не очищена.

Как убить его перед тем, как перенаправить обратно на экран 1?

Одна вещь, которую я заметил.Если я уменьшу размер фотографии, скажем, обрезая или уменьшив размер изображения, все пройдет гладко, несколько раз ... прежде чем я получу ту же проблему.В общем, заполнение занимает чуть больше времени.

Я бы очень признателен за какое-то решение здесь, так как это очень важно.

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

Возможно, у вас утечка памяти, это видео может помочь вам в поиске проблемы Google I / O 2011: управление памятью для приложений Android .

Примечание: сохранены битовые карты до 3.1в памяти кучи ВМ, но в собственной памяти, что вызывает массу проблем при обнаружении утечек, для получения дополнительной информации см. видео

0 голосов
/ 11 июня 2011

Посмотрите, как используется Слабая ссылка .

...