HarmonyOS 鸿蒙Next ImageKnife 是如何保证相同的url同时加载 但只连网下载了一次的

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next ImageKnife 是如何保证相同的url同时加载 但只连网下载了一次的

在我的一个工程中, 我尝试ImageKnife监听是如何加载相同的一张图片的, 代码如下:

ImageKnifeComponent({

  ImageKnifeOption: {

    loadSrc:“https://www.openharmony.cn/_nuxt/img/logo.dcf95b3.png”,

    progressListener:(progress:number)=>{console.info("ImageKinfe:: call back progress = " + progress)}

  },

    onLoadListener:{

    onLoadStart:()=>{

     this.starTime = new Date().getTime()

     console.info("Load start: ");

    },

    onLoadSuccess: (data, imageData) => {

     console.info(“Load Successful: cost " + (new Date().getTime() - this.starTime) + " milliseconds”);

     return data;

    }

   }

}).width(100).height(100)

但是, 对于相同的 url 在不同的两个 Image 里面加载时, 只有第一个 Image 的 progressListener 是被调用的, 但第一和第二个 Image 的 onLoadStart 和 onLoadSuccess 却都能被回调.

我有点不是太理解.

有大佬理解其中的缘委吗?

1 回复

HarmonyOS鸿蒙Next中的ImageKnife是一个功能强大的图像处理库,它通过内置的机制来保证对于相同URL的图片只进行一次网络下载。

ImageKnife通过缓存机制实现这一功能。当ImageKnife加载一张图片时,它会首先检查本地缓存(包括内存缓存和磁盘缓存),以确定是否已存在该URL对应的图片。如果缓存中存在,则直接从缓存中读取图片数据,避免重复的网络请求。如果缓存中不存在,ImageKnife会发起网络请求下载图片,并在下载完成后将图片数据存入缓存中。

这种机制不仅提高了图片的加载速度,还减少了不必要的网络流量,提升了应用的性能和用户体验。

需要注意的是,ImageKnife的缓存策略是可以配置的,开发者可以根据实际需求调整是否跳过内存缓存、磁盘缓存策略等。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部