Что такое LazyList?

Что такое LazyList?
На чтение
14 мин.
Просмотров
37
Дата обновления
11.11.2024

Я не могу найти ни одного действительно заслуживающего доверия источника, объясняющего, что такое LazyList. Кто-нибудь?


Lazy List — это отложенная загрузка изображений с SD-карты или с сервера с использованием URL-адресов. Это похоже на загрузку изображений по запросу.

Изображения можно кэшировать на локальную SD-карту или в память телефона. URL считается ключевым. Если ключ присутствует на SD-карте, отображать изображения с SD-карты, иначе отображать изображение путем загрузки с сервера и кэшировать то же самое в выбранном вами месте. Предел кеша можно установить. Вы также можете выбрать собственное место для кэширования изображений. Кэш также можно очистить.

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

https://github.com/thest1/LazyList. Ленивый список

В вашем getview

  imageLoader.DisplayImage (imageurl, imageview);  

ImageLoader Display метод

  public void DisplayImage (String url, ImageView imageView)//url и imageview как параметры {imageViews.put (imageView, url);  Bitmap bitmap = memoryCache.get (url); //получить изображение из кеша, используя URL-адрес в качестве ключа if (bitmap! = null)//если изображение существует imageView.setImageBitmap (bitmap); //отображать iamge else//загружать изображение и отображать.  добавить в кеш.  {queuePhoto (url, imageView);  imageView.setImageResource (stub_id);  }}  

Альтернативой Lazy List является универсальный загрузчик изображений

https://github.com/nostra13/Android-Universal-Image-Loader . Он основан на Lazy List (работает по тому же принципу). Но у него много других конфигураций. Я бы предпочел использовать **** Universal Image Loader ****, потому что он дает вам больше возможностей конфигурации. Вы можете отобразить изображение ошибки, если загрузка не удалась. Может отображать изображения с закругленными углами. Может кэшироваться на диске или в памяти. Может сжимать изображение.

В пользовательском конструкторе адаптера

  Файл cacheDir = StorageUtils.getOwnCacheDirectory (a, «ваша папка»); //Получить одиночный экземпляр ImageLoader imageLoader = ImageLoader.getInstance (); //Создание конфигурации для ImageLoader (все параметры необязательны) ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder (a)//Вы можете передать свою собственную реализацию кеширования памяти .discCache (new UnlimitedDiscCache (cacheDir))//Вы можете передать свой собственный кеш диска  реализация .discCacheFileNameGenerator (новый HashCodeFileNameGenerator ()) .enableLogging () .build (); //Инициализируем ImageLoader с созданной конфигурацией.  Сделай это один раз.  imageLoader.init (конфигурация);  options = new DisplayImageOptions.Builder (). showStubImage (R.drawable.stub_id)//отображение заглушки image.cacheInMemory (). cacheOnDisc (). displayer (new RoundedBitmapDisplayer (20)). build ();  

В вашем getView ()

  ImageView image = (ImageView) vi.findViewById (R.id.imageview);  imageLoader.displayImage (imageurl, image, options);//предоставляют imageurl, imageview и параметры  

Вы можете настроить другие параметры в соответствии с вашими потребностями.

Наряду с отложенной загрузкой/универсальным загрузчиком изображений вы можете просматривать держатель для плавной прокрутки и производительности. http://developer.android.com/training/improving-layouts/smooth-scrolling.html.


Насколько я знаю, я объясню вам на примере. Если вы перечисляете много изображений с текстом, он будет потребуется некоторое время для загрузки списка, потому что вам нужно загрузить изображения, и вам нужно заполнить их в списке. Предположим, что если ваш список содержит 100 изображений, потребуется много времени, чтобы загрузить каждое изображение и показать ему элемент списка. Заставлять пользователя ждать загрузки изображений неудобно. Итак, что нам нужно сделать. В этот момент появляется ленивый список. Идея заключается в том, чтобы изображения загружались в фоновом режиме и отображали текст в течение некоторого времени.

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

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

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


Я думаю, что это наоборот. AFAIK, Lazy Loading — это определение, при котором вы фактически загружаете данные только тогда, когда они вам нужны, и это хорошая практика проектирования.

Я считаю, что то же самое применимо и к этому, только на этот раз это относится к представлению списка.

Если я ошибаюсь, поправьте меня.


Лучший пример ленивого списка — уведомления, сообщения, запросы facebook. при прокрутке данные будут загружены.



Случайное удаление папки во «внутренней памяти»

Я случайно удалил папку с именем «LazyList», потому что она была пуста, и я подумал, что это не важно. После некоторого исследования папка стала в некоторой степени важной, поскольку в ней хранится кеш для других приложений, чтобы они быстрее загружали страницы или изображения.

Как мне восстановить папку?

Или

Создается ли еще одна папка LazyList, когда она нужна или используется определенным приложением?


Android создаст новую папку , Если необходимо. Если хотите убедиться, прошейте новую прошивку. Просто сделайте резервную копию вашего устройства заранее.

Отмена
0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий