这个问题可能看起来很基本,但我正在考虑在我的 RecyclerView 中使用 Glide,我有超过 1,000 个项目。当我打开这个列表时——Glide 是开始下载全部还是只下载我面前的那些——所以如果我从 A 快速滚动到 E,它是否也会下载 B、C 和 D 的图像?
问问题
1208 次
1 回答
5
只需为您的用户添加一条Glide.with.load.into
线即可onBindViewHolder
享受表演。
Glide 将只加载绑定的图像,它会小心地加载。所以你的适配器是 1000 长,但如果只有 5 个适合第一个屏幕,那么这 5 个被 RecyclerView 绑定,所以需要 5 个图像。如果您在 3 个加载后开始滚动并且 2 个正在加载,那么当列表项被回收时,这 2 个将被取消。
基本上在任何时候你都会有大约 6 个列表项在内存中,这意味着 6 个 ImageViews 和其中 5-6 个 ImageViews 将在其中显示图像。如果视图大小相同,那么里面的位图大小也将相同,因此您可以期待一些性能提升,因为如果位图大小匹配,Glide 将尝试重用它们。
快速滚动意味着一旦绑定项目就会加载所有图像,但由于 RecyclerView 只保持少数项目布局膨胀,您可以期待快速取消,甚至可能在向服务器发出任何请求之前,因此只有滚动稳定后开始实际加载的图像很少。
您也许可以在 wiki 中找到更多信息:https ://github.com/bumptech/glide/wiki/Resource-re-use-in-Glide
于 2015-10-01T09:37:52.677 回答