diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnifeData.ets b/imageknife/src/main/ets/components/imageknife/ImageKnifeData.ets index 79a4bd2..7a3ff5b 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnifeData.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnifeData.ets @@ -44,6 +44,9 @@ export class ImageKnifeData { static PNG = 'png'; static BMP = 'bmp'; static WEBP = 'webp'; + + waitSaveDisk = false; + imageKnifeType: ImageKnifeType; drawPixelMap: DrawPixelMap; drawGIFFrame: DrawGIFFrame; diff --git a/imageknife/src/main/ets/components/imageknife/RequestOption.ets b/imageknife/src/main/ets/components/imageknife/RequestOption.ets index eddaf7b..89028b4 100644 --- a/imageknife/src/main/ets/components/imageknife/RequestOption.ets +++ b/imageknife/src/main/ets/components/imageknife/RequestOption.ets @@ -431,10 +431,23 @@ export class RequestOption { break; } } + + if(imageKnifeData.waitSaveDisk){ + // 等落盘结束后主动调用#removeCurrentAndSearchNext方法 + }else{ + // 非落盘情况,直接进行寻找下一个加载 + globalThis.ImageKnife.removeRunning(this); + } + // 加载成功之后 globalThis.ImageKnife.removeRunning(this); } + // 图片文件落盘之后会自动去寻找下一个数据加载 + removeCurrentAndSearchNext(){ + globalThis.ImageKnife.removeRunning(this); + } + loadError(err) { LogUtil.log("loadError:" + err); LogUtil.log("loadError stack=:" + JSON.stringify(err.stack)); diff --git a/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets b/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets index 8bd051a..14ed4cd 100644 --- a/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets +++ b/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets @@ -520,12 +520,16 @@ export class RequestManager { this.mMemoryCacheProxy.putValue(this.options.generateCacheKey, imageKnifeData); let save2DiskCache = async (arraybuffer) => { await this.mDiskCacheProxy.putValue(this.options.generateDataKey, arraybuffer) + // 落盘之后需要主动移除当前request并且调用下一个加载 + let removeCurrentAndSearchNextRun = this.options.removeCurrentAndSearchNext.bind(this.options) + removeCurrentAndSearchNextRun(); } let runSave2Disk = (resolve, reject) => { resolve(source); } let promise = new Promise(runSave2Disk); promise.then(save2DiskCache); + imageKnifeData.waitSaveDisk = true; onComplete(imageKnifeData); }