2015-09-24 2 views
1

Этот вопрос может выглядеть очень простым, но я думаю об использовании Glide в моем RecyclerView, где у меня более 1000 предметов. Когда я открываю этот список, Glide начинает загружать их все или только те, которые у меня на самом деле передо мной, поэтому, если я быстро перейду от A до E, он будет загружать изображения B, C и D?Как работает Infact Glide?

+0

вы можете проверить исходный код скольжения. некоторые дополнительные очки http://engineeringblog.yelp.com/2015/07/glide-how-yelps-android-app-loads-images.html –

+0

Это то, что я искал. Спасибо! –

ответ

3

Просто положите линию Glide.with.load.into на ваш onBindViewHolder и наслаждайтесь выступлением.

Glide будет загружать только связанные изображения, и это делается с осторожностью. Таким образом, ваш адаптер имеет длину 1000, но если на первом экране всего 5, то эти 5 связаны с RecyclerView, поэтому запрашивается 5 изображений. Если вы начнете прокрутку после того, как загрузится 3 и 2 будет загружаться, то эти 2 будут отменены, когда элемент списка будет переработан.

По существу в любое время вы будете иметь около 6 элементов списка в памяти, то есть 6 ImageViews и 5-6 из этих ImageViews будут иметь изображения, отображаемые в них. Если размеры просмотров одинаковы, то битмапы внутри будут одинаковыми, поэтому вы можете ожидать некоторого увеличения производительности, потому что, если размеры битмапа совпадают, Glide попытается повторно использовать их.

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

Вы можете найти более подробную информацию в вики: https://github.com/bumptech/glide/wiki/Resource-re-use-in-Glide