如何清除 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();
                            }
                        });

但图像仍保留在缓存中并显示旧图像。有什么建议吗?

我已经设法使用 SharedPrefrencesrandom 数字和 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 将从缓存中加载它。