Glide 实际上是如何工作的?

jea*_*rme 2 android android-recyclerview android-glide

这个问题可能看起来非常基本,但我正在考虑在我的 RecyclerView 中使用 Glide,其中我有超过 1,000 个项目。当我打开这个列表时 - Glide 开始下载所有图像还是只下载我面前实际存在的图像 - 那么如果我从 A 快速滚动到 E,它也会下载 B、C 和 D 的图像吗?

TWi*_*Rob 5

只需将一条Glide.with.load.into线连接到您的设备上onBindViewHolder即可享受表演。

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