Я просмотрел несколько сообщений о ленивой загрузке, но я считаю, что моя проблема немного другая.Android: ленивая загрузка в Галерее
У меня есть галерея (мой класс расширяет галерею), которая отображает 20 изображений большого размера (400-500K каждый). Я не могу загрузить их все в галерею, так как я получаю исключение OutOfMemory.
Итак, я создал массив из 20 Drawables и изначально заселял первые 9 элементов (изображения поступают из Интернета) и устанавливает все остальное в null. Мое намерение заключалось в следующем: при движении вправо, выберите элемент нет. 10 и установите нулевой элемент no. 0. На другой флажок в правый элемент выборки нет. 11 и установите нулевой элемент no. 1 до нуля. Та же логика на выходе слева.
Проблема в том, что я могу летать намного быстрее, чем элементы извлекаются. Моя галерея имеет BaseAdapter и его GetView() выглядит примерно так:
public View getView(int position, View convertView, ViewGroup parent){ ImageView imageView = new ImageView(); imageView.setDrawable(imageArray[position]; .... .... return imageView; }
Как сказать GetView() - если imageArray [положение] по-прежнему нулевой, показывают «загрузка ...» диалог и как только он установлен, повторяйте себя с той же позицией?
Я не хочу видеть изображениеView пустым, а затем установить на лету. Я не хочу видеть изображение вообще до тех пор, пока оно не будет установлено.
Спасибо.
В блоге Android есть отличный пост (а также пример кода), который отвечает на ваш вопрос: http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html – Ally