如何清除 Glide 库本地磁盘缓存
How to clear Glide library local disk cache
我试图仅在特定情况下为特定视图清除 Glide 缓存(当用户选择图像并将该图像复制到本地应用程序数据文件夹,然后显示在 ImageView
中)
我看到很多建议操纵 Glide 磁盘缓存策略的答案,但这会在每次创建 activity 时创建一个新图像,这是我不想要的。
我最好的选择是每次切换按钮状态改变时清除整个Glide缓存(如果有更好的解决方案,请推荐)
我试着添加这个:
Glide.get(getContext()).clearMemory();
new Thread(new Runnable() {
@Override
public void run() {
Glide.get(getContext()).clearDiskCache();
}
});
但图像仍保留在缓存中并显示旧图像。有什么建议吗?
我已经设法使用 SharedPrefrences
和 random
数字和 Glide 的 Signature
class
解决了这个问题
在选择新图像后调用它
double random = Math.random();
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("customID", ""+ random ).apply();
那么在显示图片的时候,就用这个
Glide.with(this).load(custom_image)
.signature(new ObjectKey(themePrefs.getString("customID", "")))
.centerCrop().into(background_layout);
因此每次选择新图像时,都会生成一个新的随机数,然后 Glide 将面对不同的签名(随机数)并加载新图像。但是当 activity 恢复或在以后任何时候重新启动时,签名将保持不变,因此 Glide 将从缓存中加载它。
我试图仅在特定情况下为特定视图清除 Glide 缓存(当用户选择图像并将该图像复制到本地应用程序数据文件夹,然后显示在 ImageView
中)
我看到很多建议操纵 Glide 磁盘缓存策略的答案,但这会在每次创建 activity 时创建一个新图像,这是我不想要的。
我最好的选择是每次切换按钮状态改变时清除整个Glide缓存(如果有更好的解决方案,请推荐)
我试着添加这个:
Glide.get(getContext()).clearMemory();
new Thread(new Runnable() {
@Override
public void run() {
Glide.get(getContext()).clearDiskCache();
}
});
但图像仍保留在缓存中并显示旧图像。有什么建议吗?
我已经设法使用 SharedPrefrences
和 random
数字和 Glide 的 Signature
class
在选择新图像后调用它
double random = Math.random();
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("customID", ""+ random ).apply();
那么在显示图片的时候,就用这个
Glide.with(this).load(custom_image)
.signature(new ObjectKey(themePrefs.getString("customID", "")))
.centerCrop().into(background_layout);
因此每次选择新图像时,都会生成一个新的随机数,然后 Glide 将面对不同的签名(随机数)并加载新图像。但是当 activity 恢复或在以后任何时候重新启动时,签名将保持不变,因此 Glide 将从缓存中加载它。