Glide如何工作?

时间:2015-09-24 17:41:43

标签: android android-recyclerview android-glide

这个问题可能看起来很基本,但我考虑在我的RecyclerView中使用Glide,我有超过1,000个项目。当我打开这个列表时--Glide会开始全部下载它们还是只有我实际拥有的那些 - 所以如果我将从A快速滚动到E,它会下载B&C,C&C和D的图像也是?

1 个答案:

答案 0 :(得分:3)

只需将Glide.with.load.into行添加到onBindViewHolder并享受效果。

Glide将仅加载绑定的图像,并且小心操作。所以你的适配器是1000长,但如果只有5适合第一个屏幕,那么这5个由RecyclerView绑定,因此请求5个图像。如果在加载3并且正在加载2之后开始滚动,那么当列表项被回收时,这些将被取消。

基本上在任何时候你都会在内存中有大约6个列表项,这意味着6个ImageViews和5-6个ImageViews中都会显示图像。如果视图的大小相同,那么内部的位图大小将相同,因此您可以预期性能会有所提高,因为如果位图大小匹配,Glide将尝试重新使用它们。

快速滚动意味着一旦项目被绑定就会加载所有图像,但由于RecyclerView只保留了一些项目布局,所以即使在向服务器发出任何请求之前,也可以预期快速取消,因此,只有少数图像会被实际加载,这些图像会在滚动结束后开始。

您可以在wiki中找到更多信息:https://github.com/bumptech/glide/wiki/Resource-re-use-in-Glide