【关键字】
Image / 全局缓存 / 部分场景不缓存 / 实时获取 / setImageCacheCount / ImageKnife
【问题描述】
-
Image控件是否有缓存机制?是否需要对图片加载进行方法封装?
-
是否有加载图片时不使用缓存、每次联网都获取最新资源的方法?
-
是否有方案能实现下述业务需求:图片在app全局使用缓存,在特定场景下实时从服务端获取,例如加载用户头像时,业务一旦将图片下线处理,图片找不到时需要恢复默认。
【解决方案】
-
图片有内存缓存机制,会统计到当前APP,缓存采用内置的LRU策略,新图片加载后,如果超过缓存上限,会删除最久未再次加载的缓存。
-
可不调用setImageCacheCount,或者设置为0。两种方法均不会缓存,每次都会获取最新的资源。
-
目前ArkUI提供的Image组件原生能力,无法满足全局缓存、部分场景下不缓存的业务场景。
若要实现上述需求场景,需要封装图片加载,可参考第三方开源库ImageKnife进行封装:https://gitee.com/openharmony-tpc/ImageKnife
也可以不开启全局缓存,使用ImageKnife给图片单独设置缓存,部分场景下使用Image组件来设置图片不缓存。