小编Cav*_*dro的帖子

Android:使用jetpack中的线圈缓存图像的有效性

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

我面临的问题是什么:即使 20 秒后,图像也没有从缓存中清除。我正在使用 Coil 作为 jetpack 组成jetpack 线圈,并使用 Jetpack 标头进行缓存控制 提前致谢...

在应用程序类中,我创建了一个 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)
Run Code Online (Sandbox Code Playgroud)

在 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 = …
Run Code Online (Sandbox Code Playgroud)

android android-image kotlin android-jetpack-compose coil

6
推荐指数
1
解决办法
1887
查看次数