【问题标题】:Glide: Preload images in memory cache (with or without disk cache)Glide:在内存缓存中预加载图像(有或没有磁盘缓存)
【发布时间】: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


【解决方案1】:

参考this的文章可以将图片缓存在内存中然后使用

onlyRetrieveFromCache( true )

仅从内存中加载图像

【讨论】:

  • 这使用磁盘缓存。它与内存缓存无关。
猜你喜欢
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 2016-06-12
  • 2017-11-19
  • 2015-10-01
相关资源
最近更新 更多