From 3df0657c8474a0e479ed955d1e0cf634d399f50c Mon Sep 17 00:00:00 2001 From: zhoulisheng1 Date: Sat, 6 May 2023 10:19:43 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9pending=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E7=AD=96=E7=95=A5,=E4=BF=AE=E5=A4=8D=E6=9C=AA=E8=90=BD?= =?UTF-8?q?=E7=9B=98=E8=80=8C=E4=B8=8B=E4=B8=80=E4=B8=AA=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=88=B0=E6=9D=A5=EF=BC=8C=E9=87=8D=E5=A4=8D=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E8=AF=B7=E6=B1=82=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhoulisheng1 --- .../ets/components/imageknife/ImageKnifeData.ets | 3 +++ .../ets/components/imageknife/RequestOption.ets | 13 +++++++++++++ .../imageknife/requestmanage/RequestManager.ets | 4 ++++ 3 files changed, 20 insertions(+) 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); }