Недостаточно памяти с ListView - PullRequest
2 голосов
/ 28 марта 2012

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

У меня есть сотни и сотни изображений, которые я должен показать в одном ListView в одном Activity.

Я использовал концепцию ленивой загрузки Федора.

Код работает хорошо, когда изображения маленькие (что-то вроде 50-100 изображений), но если я получаю от 200 до 300 изображений, как только пользователь делает прокрутку ListView (со временем), я получаю исключение нехватки памяти.

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

Все предположения, которые я видел до сих пор, основаны на уменьшении размера растрового изображения путем его масштабирования или другими способами. Я уже попробовал эти методы. Но все же ООМ происходит в какой-то момент времени.

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

Мои вопросы здесь:

  1. Как отображать n изображения в одном ListView, не обращаясь к OOM?
  2. Каковы наилучшие стратегии в этом сценарии?
  3. Можно ли показать около 500 изображений в одном ListView?

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Попробуйте использовать изображения уровня API 11+, прежде чем этот уровень API будет помещен в кучу приложения.И да, можно иметь представление списка с 500 изображениями и работать без сбоев (например, приложение «Контакты»).

Этот http://code.google.com/p/android-imagedownloader/ может помочь вам получать изображения, кэшировать и перерабатывать их.

0 голосов
/ 28 марта 2012
  1. Просмотр googles shelvesproject.
  2. Shelvesproject выполняет следующее: использует изображение-заполнитель при загрузке изображения, использует слабые ссылки для хранения изображений, обработчик отложенных обновлений очищается.
  3. Да и нет, возможно иметь просмотр списка с таким количеством элементов, но невозможно иметь столько изображений одновременно в памяти.
...