diff --git a/CHANGELOG.md b/CHANGELOG.md index 4caf4a9..c0421e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - 修复懒加载在多次点击出现卡死的问题 - 支持多种组合变换 - 提供清理缓存能力 +- 修复preLoad接口失效 ## 2.2.0-rc.2 - ImageKnife支持下采样 diff --git a/library/src/main/ets/components/imageknife/ImageKnife.ets b/library/src/main/ets/components/imageknife/ImageKnife.ets index 2009820..f71d9e9 100644 --- a/library/src/main/ets/components/imageknife/ImageKnife.ets +++ b/library/src/main/ets/components/imageknife/ImageKnife.ets @@ -302,9 +302,58 @@ export class ImageKnife { preload(request: RequestOption): void { // 每个request 公共信息补充 request.setFilesPath(this.filesPath); - return this.parseSource(request); + return this.loadResources(request); } + loadResources(request: RequestOption) { + let factories: EngineKeyInterface; + let cacheKey: string; + let transferKey: string; + let dataKey: string; + if (this.engineKeyImpl) { + factories = this.engineKeyImpl; + } else { + factories = new EngineKeyFactories(); + } + // 生成内存缓存key 内存 变换后磁盘 + let loadKey = ''; + if (typeof request.loadSrc == 'string') { + loadKey = request.loadSrc; + } else { + loadKey = JSON.stringify(request.loadSrc); + } + + let size = JSON.stringify(request.size); + + let transformed = ''; + if (request && request.transformations) { + for (let i = 0; i < request.transformations.length; i++) { + if (i == request.transformations.length - 1) { + transformed += request.transformations[i].getName() + ""; + } else { + transformed += request.transformations[i].getName() + ","; + } + } + } + + let dontAnimateFlag = request.dontAnimateFlag; + + let signature = request.signature; + + cacheKey = factories.generateMemoryCacheKey(loadKey,size,transformed,dontAnimateFlag,signature); + + // 生成磁盘缓存变换后数据key 变换后数据保存在磁盘 + transferKey = factories.generateTransformedDiskCacheKey(loadKey,size,transformed,dontAnimateFlag,signature); + + // 生成磁盘缓存源数据key 原始数据保存在磁盘 + dataKey = factories.generateOriginalDiskCacheKey(loadKey,signature); + + request.generateCacheKey = cacheKey; + request.generateResourceKey = transferKey; + request.generateDataKey = dataKey; + + this.loadCacheManager(request); + } // 暂停所有请求 async pauseRequests(): Promise { await this.mutex.lock(async () => {