【发布时间】:2023-03-20 12:55:02
【问题描述】:
我正在使用
glide.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.preload()
预加载图像。
但是,我需要它们在内存中,而不仅仅是在磁盘上,因此它可以更快地加载到 ImageView 中,就像我在将图像加载到 ImageView 一次后重新访问图像时那样。
我也试过
glide.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(PreloadTarget.obtain(glide, PreloadTarget.SIZE_ORIGINAL, PreloadTarget.SIZE_ORIGINAL))
运气不好。
PS:我访问过this question 和其他人,答案已经过时,因此这个问题。
【问题讨论】:
-
你确定是这样吗?使用 Glide 加载图像后,位图应该在内存中,考虑到它有一个内置的
BitmapPool,如果从其他任何地方调用它,它会获取具有相同哈希的相同位图。调用相同的 URL 应该从位图池中获取位图,而不是从磁盘缓存中。 -
@FurkanYurdakul 我的观察是,如果我使用它预加载图像后,它会在几分之一秒内显示一个空的图像视图;对于已经在任何视图中加载的图像,情况并非如此。
-
这可能是因为 Glide 可能一直试图从后台线程加载位图本身,然后将位图放在主线程的目标上。您可能会遇到轻微的延迟,但不会造成大问题。如果你愿意,你可以为每个请求添加一个回调(我的意思是一个监听器),自己缓存它,如果请求相同,则直接从主线程加载它。
标签: android image caching android-glide preload