Closed RavenLiao closed 2 years ago
模糊匹配内存缓存确实考虑过,但当时没有想到什么样的情况下有这样的需求,你可否举个栗子?
模糊匹配内存缓存确实考虑过,但当时没有想到什么样的情况下有这样的需求,你可否举个栗子?
就一个很简单的缩略图列表+点击查看原图场景,其实我只关心是同一张图片即可,如果将memoryCacheKey直接设成图片的id,这时候设置placeholder就很方便了。
你说的 placeholder 的情况只需要让 MemoryCacheStateImage 支持模糊匹配即可。 那在 ImageReqest 里支持设置 memoryCacheKey 的意义呢?
模糊匹配确实是一种解决方案,但感觉模糊匹配第一效率不高,第二,使用模糊匹配也增加了出现意外情况的可能性。 但可以在request中直接设置的话,就明确非常多,使用起来也比较简单。
在 placeholder 支持模糊匹配可以要求 url 一样即可,但这样的情况下如果内存中存在不同效果的,比如裁剪了,模糊了的一样 url 的图片,你在查看原图页面可能也不想用这样的图片作为 placeholder,所以 placeholder 到底是用模糊匹配还是精确匹配还要根据你的具体使用场景来决定。
但在 ImageRequest 里支持设置 memoryCacheKey 的话,memoryCacheKey 的影响范围就不是 placehoder 了,而是最终显示在 ImageView 上的结果,而结果通常是要准确的,你觉得什么样的场景会需要模糊的结果呢?
在 placeholder 支持模糊匹配可以要求 url 一样即可,但这样的情况下如果内存中存在不同效果的,比如裁剪了,模糊了的一样 url 的图片,你在查看原图页面可能也不想用这样的图片作为 placeholder,所以 placeholder 到底是用模糊匹配还是精确匹配还要根据你的具体使用场景来决定。
但在 ImageRequest 里支持设置 memoryCacheKey 的话,memoryCacheKey 的影响范围就不是 placehoder 了,而是最终显示在 ImageView 上的结果,而结果通常是要准确的,你觉得什么样的场景会需要模糊的结果呢?
确实是,但现在模糊匹配还没有这个接口,拿不到key列表,希望可以增加一下
新版本测试版发布了,新增了 InexactlyMemoryCacheStateImage 应该可以解决你的需求,sample app 中也用了,可以参考一下
Coil的ImageRequest中可以调用memoryCacheKey()直接设置。因为有时不需要太细致的区分缓存,所以希望可以像Coil一样增加设置cachekey接口来简化获取缓存的流程。