Glide:防止从磁盘加载图片,每次通过模块从服务器加载

Glide: Prevent loading images from disk, load from server each time via module

我正在使用 AppGlideModule 来自定义 Glide 作为我的图像加载器。

如何强制它从网络加载图像 (url)? (不是来自 DiskCache)

注意:我知道这会通过为每个调用设置 diskCacheStrategy(DiskCacheStrategy.NONE) 来实现,如下所示:

GlideApp.with(view)
   .load(imgUrl)
   .diskCacheStrategy(DiskCacheStrategy.NONE)
   .into(binding.imgCover)

但我正在寻找为整个应用程序应用此配置。

对于进程范围的实现,您可以选择在模块配置期间配置无操作自定义磁盘缓存,如下所示:

@GlideModule
public class YourAppGlideModule extends AppGlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        builder.setDiskCache(new DiskCache.Factory() {
            @Override
            public DiskCache build() {
                return new NoOpDiskCache();
            }
        });
    }
}

对于来自 get(Key key)NoOpDiskCache return null 和所有其他覆盖方法的无操作。

diskCacheStrategy 将应用为 RequestOptions。所以我尝试了这个:

@GlideModule
class CustomGlideModule : AppGlideModule() {
    override fun applyOptions(context: Context, builder: GlideBuilder) {
        builder.setDefaultRequestOptions {
            RequestOptions()
                .diskCacheStrategy(DiskCacheStrategy.NONE)
        }
    }
}