У меня есть виджет галереи с почти полноэкранными изображениями. Изображения загружаются с SD-карты, и одновременно видно только одно изображение (при прокрутке принимайте за перекрытие). Проблема в том, что после прокрутки около 35 изображений я получаю OutOfMemoryError: битовая карта превышает бюджет виртуальной машины. Я думал, что виджет галереи распределяет представления по мере необходимости, но я думаю, что я либо ошибаюсь, либо делаю что-то не так.
Я использую CursorAdapter для загрузки данных и замечаю, что при каждом переходе к новому изображению вызываются как newView (), так и bindView (). Я предполагаю, что это означает, что исходное представление было удалено, но проблема нехватки памяти, кажется, указывает на противоположное. Я использую ViewHolder с несколькими полями.
Итак, мои вопросы:
- Работает ли виджет галереи иначе, чем просмотр списка при использовании с CursorAdapter?
- Существует ли способ принудительной переработки и / или удаления видов? (Или что я могу делать не так).
- Другие предложения по решению проблем нехватки памяти для этого сценария? Уменьшение масштаба на самом деле не вариант, и галерея должна иметь возможность обрабатывать неограниченное количество изображений (или как минимум вдвое больше).