Glide 是如何工作的?

How infact Glide works?

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

只需在 onBindViewHolder 上输入 Glide.with.load.into 行即可享受表演。

Glide 将只加载绑定的图像,它会小心翼翼地加载。所以你的适配器有 1000 长,但如果只有 5 个适合第一个屏幕,那么这 5 个被 RecyclerView 绑定,所以需要 5 个图像。如果3个加载完成后开始滚动,2个正在加载,那么回收列表项时,这2个会被取消

基本上在任何时候您的内存中都会有大约 6 个列表项,这意味着 6 个 ImageView 并且其中 5-6 个 ImageView 将在其中显示图像。如果视图大小相同,那么里面的位图大小也会相同,因此您可以期待一些性能提升,因为如果位图大小匹配,Glide 将尝试重新使用它们。

快速滚动意味着所有图像将在项目绑定后立即加载,但由于 RecyclerView 仅保持少数项目布局膨胀,您可以预期快速取消,甚至可能在向服务器,因此只有少数图像会在滚动稳定后开始实际加载。

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