【问题标题】:Android:Cache Validity for an Image using coil in jetpackAndroid:在jetpack中使用线圈的图像的缓存有效性
【发布时间】:2021-09-09 17:44:41
【问题描述】:

我在使用线圈为 android jetpack 中的缓存设置有效性时遇到问题。 我需要什么:在 Android Jetpack compose 中,我需要从 Url 下载 SVG 图像并将其存储到缓存中。但是缓存应该只存储图像 20 秒。所以在 20 秒内,不应该有任何进一步的图像请求。在这 20 秒内,图像应从缓存中显示。 20 秒后,我想要图像,应该从缓存中清除。

我面临的问题是什么:即使 20 秒后图像也没有从缓存中清除。我正在为喷气背包使用 Coil compose jetpack coil Jetpack header for Cachecontrol 在此先感谢....

在应用程序类中,我创建了一个单实例 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)

        )

【问题讨论】:

  • create an issue on Coil github
  • 我在线圈 GitHub 上创建了一个问题,感谢@PhilipDukhov
  • 不知道你为什么在这里评论。您应该将更新后的代码作为注释添加到您的线圈问题中。也许您仍然做错了什么,或者这确实是一个错误。
  • 我面临同样的问题

标签: android kotlin android-jetpack-compose android-image coil


【解决方案1】:

我收到了线圈的回复:

这不是错误。查看您的代码,您正在设置 请求的缓存控制标头。您需要将其设置为 使用网络拦截器响应。

但是我尝试了这种方法,它也没有奏效。

希望这可能对其他人有用。

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2022-08-09
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多