【问题标题】:Manually save Bitmap or ByteArray into cache and manually delete one cache image using image url手动将 Bitmap 或 ByteArray 保存到缓存中,并使用图像 url 手动删除一张缓存图像
【发布时间】:2020-07-28 13:42:06
【问题描述】:
  1. 当我将图像上传到服务器时,我想使用 Bitmap 或 ByteArray 将其缓存在 Glide 中的存储中,因此一旦上传,我就不必从服务器下载它。我可以在 iOS 中使用 SDWebImage 来实现这一点,但我在 Glide 中找不到如何做到这一点。

    [((SDImageCache *)webImageManager.imageCache) storeImage:image forKey:downloadURL completion:nil];

  2. 有没有办法使用一个 ImageURL 手动删除一个缓存的图像?如果不再需要图像,我想从用户的设备中删除它,这样它就不会使用用户的设备内存。在这里我也可以在 iOS 中使用 SDWebImage 来实现这一点,但我在 Glide 中找不到如何做到这一点。

    [((SDImageCache *)webImageManager.imageCache) removeImageForKey:imageUrl withCompletion:nil];

感谢您的专业知识

【问题讨论】:

  • 如果您从设备上传文件,那么为什么还要在某处存储一些位图。如果您想尽快用完存储空间,请保存位图。
  • 我想在本地存储,所以我不必使用 glide 从服务器下载它。使用 Firebase 进行每次下载都需要付费。
  • 我在评论你对位图的使用。
  • 所以我可以缓存它并上传它。这与问题无关。
  • 您上传的图片可能会从库中删除。这就是为什么我缓存它以解决所有极端情况。但这不是我的问题(而是一个答案)

标签: android android-glide


【解决方案1】:

glide(或其他图像缓存库)中没有用于从缓存中删除特定图像的接口。您可以清除整个缓存。 但是您可以在滑翔中跳过特定图像 URI 的缓存 使用 diskCacheStrategy(DiskCacheStrategy.NONE) 避免磁盘缓存,使用 skipMemoryCache() 避免缓存在内存中。 有关滑行缓存的更多信息 http://bumptech.github.io/glide/doc/caching.html#cache-invalidation

【讨论】:

  • 感谢您回答 2 个问题中的 1 个问题 - 令人失望的是 Glide 没有像 iOS 的 SDWebImage 那样简单的功能。更重要的问题是第一个问题。有没有办法保存位图(或字节数组或本地文件)以手动缓存到 url?这样下次当你从服务器加载那个 url 时,Glide 会智能地检测到它已经被缓存并且根本不会进行网络调用。这很重要,因为我不希望上传图像的用户也下载它们 - 我的服务器数据库的必要成本,即每次下载的成本。
  • 如果你能回答第二个问题,赏金就是你的;)
猜你喜欢
  • 2014-05-11
  • 2013-06-01
  • 2020-08-11
  • 2012-06-05
  • 2020-05-25
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
相关资源
最近更新 更多