From 8803de9ec0edc721ce011e9a62c45e958a49110e Mon Sep 17 00:00:00 2001 From: zhoulisheng <635547767@qq.com> Date: Wed, 13 Apr 2022 14:50:14 +0800 Subject: [PATCH] 1.Code optimization Signed-off-by: zhoulisheng <635547767@qq.com> --- .../main/ets/MainAbility/workers/worker1.js | 50 +------------- .../ets/components/cache/key/EngineKey.ets | 24 +++---- .../ets/components/imageknife/ImageKnife.ets | 69 +++++-------------- .../ets/components/imageknife/pngj/PngWork.js | 6 -- .../ets/components/imageknife/pngj/Pngj.ets | 15 ++-- .../requestmanage/RequstManager.ets | 2 +- 6 files changed, 36 insertions(+), 130 deletions(-) diff --git a/entry/src/main/ets/MainAbility/workers/worker1.js b/entry/src/main/ets/MainAbility/workers/worker1.js index 19464a1..76dc412 100644 --- a/entry/src/main/ets/MainAbility/workers/worker1.js +++ b/entry/src/main/ets/MainAbility/workers/worker1.js @@ -17,53 +17,5 @@ import {handler} from '@ohos/imageknife/src/main/ets/components/imageknife/pngj/ arkWorker.parentPort.onmessage = handler -//import arkWorker from '@ohos.worker'; -//import {UPNG} from '@ohos/imageknife/src/main/ets/components/imageknife/pngj/UPNG' -// -//arkWorker.parentPort.onmessage = function (e) { -// var data = e.data; -// switch (data.type) { -// case 'readPngImageAsync': -// console.log('readPngImageAsync worker start 1') -// var png = UPNG.decode(data.data); -// let array = png.data; -// let arrayData = array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset) -// png.data = arrayData; -// let dataObj = { type: 'readPngImageAsync', data: png, receiver: data.data} -// arkWorker.parentPort.postMessage(dataObj, [png.data, data.data]); -// console.log('readPngImageAsync worker to main 1') -// break; -// case 'writePngWithStringAsync': -// console.log('writePngWithStringAsync worker start 1') -// let addInfo = data.info; -// let pngDecode = UPNG.decode(data.data); -// let newPng = UPNG.encodeWithString(addInfo, UPNG.toRGBA8(pngDecode), pngDecode.width, pngDecode.height, 0) -// let dataObj2 = { type: 'writePngWithStringAsync', data: newPng, receiver: data.data} -// arkWorker.parentPort.postMessage(dataObj2, [newPng, data.data]); -// console.log('writePngWithStringAsync worker to main 1') -// break; -// case 'writePngAsync': -// console.log('writePngAsync worker start 1') -// let pngDecode3 = UPNG.decode(data.data); -// let newPng3 = UPNG.encode(UPNG.toRGBA8(pngDecode3), pngDecode3.width, pngDecode3.height, 0) -// let dataObj3 = { type: 'writePngAsync', data: newPng3, receiver: data.data} -// arkWorker.parentPort.postMessage(dataObj3, [newPng3, data.data]); -// console.log('writePngAsync worker to main 1') -// break; -// case 'normal': -// arkWorker.parentPort.postMessage(data); -// break; -// case 'error': -// throw new Error('123'); -// break; -// case 'buffer': -// let uint8Array = new Uint8Array(data.data); -// arkWorker.parentPort.postMessage(data, [data.data]); -// -// break; -// default: -// -// break -// } -//} + diff --git a/imageknife/src/main/ets/components/cache/key/EngineKey.ets b/imageknife/src/main/ets/components/cache/key/EngineKey.ets index 601abb1..be28a7c 100644 --- a/imageknife/src/main/ets/components/cache/key/EngineKey.ets +++ b/imageknife/src/main/ets/components/cache/key/EngineKey.ets @@ -28,11 +28,11 @@ export class EngineKey implements Key { // 内存缓存 缓存生成规则:是否会影响图片内容,不影响则通用(strategy onlyRetrieveFromCache isCacheable)为通用项目 // 生成规则 加载数据原 各类参数(排除监听 排除 占位图 失败占位图) generateCacheKey(): string{ - console.log('generateCacheKey 1'); + let loadSrc = JSON.stringify(this.request.loadSrc); - console.log('generateCacheKey 2'); + let size = JSON.stringify(this.request.size); - console.log('generateCacheKey 3'); + let transformationsStr; if(this.request && this.request.transformations) { for (let i = 0; i < this.request.transformations.length; i++) { @@ -43,24 +43,24 @@ export class EngineKey implements Key { } } } - console.log('generateCacheKey 4'); + let dontAnimateFlag = JSON.stringify(this.request.dontAnimateFlag); - console.log('generateCacheKey 5'); + let key = "loadSrc=" + loadSrc + ";" + "size=" + size + ";" + "transformations=" + transformationsStr + ";" + "dontAnimateFlag=" + dontAnimateFlag + ";" - console.log('generateCacheKey 6'); + return key; } // 磁盘缓存 缓存生成规则:是否会影响图片内容,不影响则通用(strategy onlyRetrieveFromCache isCacheable)为通用项目 // 生成规则 加载数据原 各类参数(排除监听 排除 占位图 失败占位图) generateResourceKey(): string{ - console.log('generateResourceKey 1'); + let loadSrc = JSON.stringify(this.request.loadSrc); - console.log('generateResourceKey 2'); + let size = JSON.stringify(this.request.size); - console.log('generateResourceKey 3'); + let transformationsStr; if(this.request && this.request.transformations) { for (let i = 0; i < this.request.transformations.length; i++) { @@ -71,14 +71,14 @@ export class EngineKey implements Key { } } } - console.log('generateResourceKey 4'); + let dontAnimateFlag = JSON.stringify(this.request.dontAnimateFlag); - console.log('generateResourceKey 5'); + let key = "loadSrc=" + loadSrc + ";" + "size=" + size + ";" + "transformations=" + transformationsStr + ";" + "dontAnimateFlag=" + dontAnimateFlag + ";" - console.log('generateResourceKey 6'); + return key; } diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets index 8336431..198b5ee 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets @@ -204,7 +204,6 @@ export class ImageKnife { // 正常加载 call(request: RequestOption) { - console.log("ImageKnife call") // 添加全局监听 if(this.defaultListener) { request.addListener(this.defaultListener) @@ -230,48 +229,32 @@ export class ImageKnife { } loadResources(request: RequestOption) { - console.log("ImageKnife loadResources") let factories; let cacheKey; let transferKey; let dataKey; - try { - factories = new EngineKeyFactories(); - }catch(err){ - console.log('ImageKnife loadResources1 err='+ err); - } - // 生成内存缓存key 内存 变换后磁盘 - try { - cacheKey = factories.buildCacheKey(request); - }catch(err){ - console.log('ImageKnife loadResources2 err='+ err); - } - // 生成磁盘缓存变换后数据key 变换后数据保存在磁盘 - try{ - transferKey = factories.buildResourceKey(request); - }catch(err){ - console.log('ImageKnife loadResources3 err='+ err); - } - // 生成磁盘缓存源数据key 原始数据保存在磁盘 - try{ - dataKey = factories.buildDataKey(request); - }catch(err){ - console.log('ImageKnife loadResources4 err='+ err); - } - request.generateCacheKey = cacheKey; - request.generateResourceKey = transferKey; - request.generateDataKey = dataKey; + factories = new EngineKeyFactories(); + // 生成内存缓存key 内存 变换后磁盘 + + cacheKey = factories.buildCacheKey(request); + + // 生成磁盘缓存变换后数据key 变换后数据保存在磁盘 + + transferKey = factories.buildResourceKey(request); + + // 生成磁盘缓存源数据key 原始数据保存在磁盘 + + dataKey = factories.buildDataKey(request); + + request.generateCacheKey = cacheKey; + request.generateResourceKey = transferKey; + request.generateDataKey = dataKey; this.loadCacheManager(request); } // 删除执行结束的running removeRunning(request: RequestOption) { - console.log('removeRunning request key='+ - 'request.generateCacheKey =' + request.generateCacheKey+ - 'request.generateResourceKey =' + request.generateResourceKey+ - 'request.generateDataKey =' + request.generateDataKey - ) let index = -1; for (let i = 0; i < this.runningRequest.length; i++) { let tempRunning = this.runningRequest[i]; @@ -342,8 +325,6 @@ export class ImageKnife { // 启动新线程 去磁盘取 去网络取 loadCacheManager(request: RequestOption) { - console.log("ImageKnife loadCacheManager") - console.log("ImageKnife request ="+JSON.stringify(request)) if (this.keyNotEmpty(request)) { let hasRunningRequest = false; for (let i = 0; i < this.runningRequest.length; i++) { @@ -357,20 +338,8 @@ export class ImageKnife { } if (hasRunningRequest) { this.pendingRequest.push(request); - console.log('pendingRequest +1 !') - console.log('pendingRequest request key='+ - 'request.generateCacheKey =' + request.generateCacheKey+ - 'request.generateResourceKey =' + request.generateResourceKey+ - 'request.generateDataKey =' + request.generateDataKey - ) } else { this.runningRequest.push(request); - console.log('runningRequest +1 ! RequestManager.execute') - console.log('runningRequest request key='+ - 'request.generateCacheKey =' + request.generateCacheKey+ - 'request.generateResourceKey =' + request.generateResourceKey+ - 'request.generateDataKey =' + request.generateDataKey - ) // 不存在相同key的 任务可以并行 RequestManager.execute(request, this.memoryCache, this.diskMemoryCache, this.dataFetch, this.resourceFetch) } @@ -405,10 +374,7 @@ export class ImageKnife { } parseSource(request: RequestOption) { - console.log("ImageKnife parseSource") - if ((typeof (request.loadSrc as image.PixelMap).isEditable) == 'boolean') { - console.log("ImageKnife parseSource PixelMap") let imageKnifeData = new ImageKnifeData(); imageKnifeData.imageKnifeType = ImageKnifeData.PIXELMAP imageKnifeData.imageKnifeValue = request.loadSrc as PixelMap @@ -416,12 +382,9 @@ export class ImageKnife { } else if (typeof request.loadSrc == 'string') { // 进入三级缓存模型 - console.log("ImageKnife parseSource string") return this.loadResources(request); } else { - console.log("ImageKnife parseSource Resource") let res = request.loadSrc as Resource; - console.log("ImageKnife parseSource res="+JSON.stringify(res)) if (typeof res.id != 'undefined' && typeof res.type != 'undefined') { //进入三级缓存模型 本地资源不参与磁盘缓存 let none = new NONE(); diff --git a/imageknife/src/main/ets/components/imageknife/pngj/PngWork.js b/imageknife/src/main/ets/components/imageknife/pngj/PngWork.js index a4d7deb..a51628e 100644 --- a/imageknife/src/main/ets/components/imageknife/pngj/PngWork.js +++ b/imageknife/src/main/ets/components/imageknife/pngj/PngWork.js @@ -19,31 +19,25 @@ export function handler (e) { var data = e.data; switch (data.type) { case 'readPngImageAsync': - console.log('readPngImageAsync worker start') var png = UPNG.decode(data.data); let array = png.data; let arrayData = array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset) png.data = arrayData; let dataObj = { type: 'readPngImageAsync', data: png, receiver: data.data} arkWorker.parentPort.postMessage(dataObj, [png.data, data.data]); - console.log('readPngImageAsync worker to main') break; case 'writePngWithStringAsync': - console.log('writePngWithStringAsync worker start') let addInfo = data.info; let pngDecode = UPNG.decode(data.data); let newPng = UPNG.encodeWithString(addInfo, UPNG.toRGBA8(pngDecode), pngDecode.width, pngDecode.height, 0) let dataObj2 = { type: 'writePngWithStringAsync', data: newPng, receiver: data.data} arkWorker.parentPort.postMessage(dataObj2, [newPng, data.data]); - console.log('writePngWithStringAsync worker to main') break; case 'writePngAsync': - console.log('writePngAsync worker start') let pngDecode3 = UPNG.decode(data.data); let newPng3 = UPNG.encode(UPNG.toRGBA8(pngDecode3), pngDecode3.width, pngDecode3.height, 0) let dataObj3 = { type: 'writePngAsync', data: newPng3, receiver: data.data} arkWorker.parentPort.postMessage(dataObj3, [newPng3, data.data]); - console.log('writePngAsync worker to main') break; case 'normal': arkWorker.parentPort.postMessage(data); diff --git a/imageknife/src/main/ets/components/imageknife/pngj/Pngj.ets b/imageknife/src/main/ets/components/imageknife/pngj/Pngj.ets index 2f1b87f..05ac328 100644 --- a/imageknife/src/main/ets/components/imageknife/pngj/Pngj.ets +++ b/imageknife/src/main/ets/components/imageknife/pngj/Pngj.ets @@ -61,8 +61,7 @@ export class Pngj { } readPngImageAsync(worker:ArkWorker.Worker, pngBuffer: ArrayBuffer, callback:PngCallback){ - console.log('readPngImageAsync start') -// let worker = new ArkWorker.Worker('workers/worker1.js', { type: 'classic', name: 'readPngImageAsync'}) + worker.onerror = function(data){ } @@ -89,13 +88,12 @@ export class Pngj { var obj = { type: 'readPngImageAsync', data:pngBuffer} worker.postMessage(obj, [pngBuffer]) - console.log('readPngImageAsync to worker') + } writePngWithStringAsync(worker:ArkWorker.Worker,addInfo:string, pngBuffer:ArrayBuffer, callback:PngCallback) { - console.log('writePngWithStringAsync start') -// let worker = new ArkWorker.Worker('workers/worker1.js', { type: 'classic', name: 'writePngWithStringAsync'}) + worker.onerror = function(data){ } @@ -122,13 +120,12 @@ export class Pngj { var obj = { type: 'writePngWithStringAsync', data:pngBuffer, info: addInfo} worker.postMessage(obj, [pngBuffer]) - console.log('writePngWithStringAsync to worker') + } writePngAsync(worker:ArkWorker.Worker,pngBuffer:ArrayBuffer, callback:PngCallback) { - console.log('writePngAsync start') -// let worker = new ArkWorker.Worker('workers/worker1.js', { type: 'classic', name: 'writePngAsync'}) + worker.onerror = function(data){ } @@ -155,7 +152,7 @@ export class Pngj { var obj = { type: 'writePngAsync', data:pngBuffer} worker.postMessage(obj, [pngBuffer]) - console.log('writePngAsync to worker') + } } \ No newline at end of file diff --git a/imageknife/src/main/ets/components/imageknife/requestmanage/RequstManager.ets b/imageknife/src/main/ets/components/imageknife/requestmanage/RequstManager.ets index 2d8af17..a3573d8 100644 --- a/imageknife/src/main/ets/components/imageknife/requestmanage/RequstManager.ets +++ b/imageknife/src/main/ets/components/imageknife/requestmanage/RequstManager.ets @@ -489,7 +489,7 @@ export class RequestManager { this.mDiskCacheProxy.putValue(this.options.generateDataKey, arraybuffer) }) .catch((err) => { - console.log("err=" + err); + console.log("save diskLruCache error=" + err); }) } else { // 进行变换