【问题标题】:Clear glide cache across all activites?清除所有活动的滑行缓存?
【发布时间】:2017-10-02 02:16:24
【问题描述】:

我的应用中有多个活动中的用户个人资料图片。有一次,他们改变了他们的头像,我想确保我所有的 Glide 实例的缓存都被清除了。这样,当他们浏览应用程序时,他们可以看到更新后的个人资料照片。

目前我正在使用这种方法:Glide.get(activity).clearDiskCache();,它只会清除该活动的 Glide 缓存,而不会清除我的应用程序。

希望有人有一个快速的解决方案,我不需要为每个活动中的每个滑翔实例调用 .signature() 函数。或者清除每个活动中的每个滑行缓存。

【问题讨论】:

  • Glide 的缓存在所有活动之间共享。您的问题是您的ImageView 没有显示更新的个人资料图片。你可以继承ImageView并广播一个事件来通知你的ImageView更新它自己的内容或通知你的Activity/Fragment更新ImageView的内容。
  • 是的,我担心我可能不得不对我的所有活动进行单独更新:/
  • 子类ImageView会有所帮助

标签: android caching android-imageview android-glide


【解决方案1】:

试试

Glide.get(context).clearMemory();

Glide.get(context).clearDiskCache();

注意: clearMemory() 必须在主线程上调用。 clearDiskCache() 必须在后台线程上调用。您不能在同一个线程上同时调用两者。

【讨论】:

    【解决方案2】:

    我经历了整个风车尝试签名和清除缓存,老实说 - 这些选项都不是特别好,而且它们通常很慢。

    Glide 推荐的第一个解决方案要好得多,尽管有时可能需要更多时间来重新编写代码。我最终失去了理智,并对我的代码进行了必要的更改。非常值得。

    解决方案:当用户上传新图片时,更改图片的图片名称。获取文件名并使用它。一旦图片的 URL 改变了,Glide 就会知道你已经改变了图片并且会相应的更新缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-18
      • 2019-03-08
      • 2010-10-07
      • 2019-06-28
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多