线圈图像缓存

4

我使用Coil库将图片加载到Android应用中。如果没有网络,它会立即显示缓存的图像。但当有网络连接时,Coil会重新加载图像,并且一段时间内我会看到占位符。我认为这是非常奇怪的逻辑。如何使其立即显示缓存图像,即使有网络连接?

我的当前代码:

fun ImageView.setPhoto(photoLink: String) {
    load(photoLink) {
        crossfade(true)
        placeholder(R.drawable.placeholder)
        error(R.drawable.placeholder)
        size(ViewSizeResolver(this@setPhoto))
    }
}

不确定这是否真的很奇怪,难道占位符不是设计用来在图像加载时显示的吗? - a_local_nobody
为什么你不使用Glide和Picasso呢?它们可以将图片存储在缓存中。 - Muhammad Asad
@a_local_nobody 我的意思是再次等待加载。如果我已经在缓存中有相同的图像,我不想重新加载它。 - MaxAstin
1个回答

10
尝试禁用缓存头支持。
val imageLoader = ImageLoader.Builder(context)
        .respectCacheHeaders(false)
        .build()
Coil.setImageLoader(imageLoader)

这个应该放在哪里? - coderforlife
我发现你可以在应用程序实例上使用ImageLoaderFactory做类似的事情:https://coil-kt.github.io/coil/getting_started/ - coderforlife
1
@coderforlife,这并不是什么大问题,因为Coil是单例,所以更改会在整个应用程序中生效。如果应用程序只有一个活动,则我更喜欢在MainActivity中执行此操作;否则,在Application类中执行。 - Serhii Petrenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接