Cav*_*dro 6 android android-image kotlin android-jetpack-compose coil
我在使用线圈设置 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 = rememberCoilPainter(
request = imageRequest,
imageLoader = singleInstanceImageLoader
)
Image(
painter = imagePainter,
contentDescription = null,
modifier = Modifier
.wrapContentSize(Alignment.Center)
.padding(0.dp, 15.dp, 0.dp, 15.dp)
)
Run Code Online (Sandbox Code Playgroud)
我得到了线圈的回复:
这不是一个错误。查看您的代码,您正在为请求设置缓存控制标头。您需要使用网络拦截器将其设置为响应。
但我尝试了这个方法,也是行不通的。
希望这对其他人有用。
归档时间: |
|
查看次数: |
1887 次 |
最近记录: |