Android:使用Jetpack中的Coil设置图像缓存有效期。

6
我在使用Coil设置Android Jetpack缓存的有效性时遇到了问题。 我的需求: 在Android Jetpack Compose中,我需要从URL下载SVG图像并将其存储到缓存中。但是缓存应仅在20秒内存储图像。因此,在这20秒内,不应有任何进一步的图像请求。在这20秒内,应该从缓存中显示图像。20秒后,我希望图像从缓存中清除。

我面临的问题是什么: 即使过了20秒,图像仍未从缓存中清除。我正在使用Jetpack Compose的Coil jetpack coil Jetpack Cachecontrol头文件。提前感谢您的帮助...

在Application类中,我创建了一个单例ImageLoader实例。

val imageLoader = ImageLoader.Builder(applicationContext)
            .componentRegistry {
                add(SvgDecoder(applicationContext))
            }
            .okHttpClient {
                OkHttpClient.Builder()
                        .cache(CoilUtils.createDefaultCache(applicationContext))
                        .addNetworkInterceptor(provideCacheInterceptor(10))
                        .build()

            }
            .memoryCachePolicy(CachePolicy.DISABLED)
            .diskCachePolicy(CachePolicy.ENABLED)
            .build()

    Coil.setImageLoader(imageLoader = imageLoader)

在 Moment.class 中:

val singleInstanceImageLoader = context.imageLoader
val imageRequest = ImageRequest.Builder(context)
                .data(decodedURL)
                .memoryCachePolicy(CachePolicy.DISABLED)
                .diskCachePolicy(CachePolicy.ENABLED)
               .addHeader("Cache-Control", "max-age=20,public")
               .build()

        val imagePainter = rememberCoilPainter(
                request = imageRequest,
                imageLoader = singleInstanceImageLoader
        )

        Image(
                painter = imagePainter,
                contentDescription = null,
                modifier = Modifier
                        .wrapContentSize(Alignment.Center)
                        .padding(0.dp, 15.dp, 0.dp, 15.dp)

        )

在 Coil 的 Github 上创建一个问题 - Phil Dukhov
我在 Coil 的 GitHub 上创建了一个问题,感谢 @PhilipDukhov - CavinAndro
不确定你为什么在这里发表评论。你应该将更新后的代码作为评论添加到你的线圈问题中。也许你还是做错了什么,或者确实存在一个 bug。 - Phil Dukhov
1
我遇到了同样的问题。 - Valynk
1个回答

2
我收到了来自 Coil 的回复:

这不是一个 bug。看着你的代码,你正在为请求设置缓存控制头。你需要使用网络拦截器为响应设置它。

但是我尝试了这种方法,也没有起作用。
希望这对其他人有用。

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