子线程本地Resource参数类型转换成number

Signed-off-by: zgf <zenggaofeng2@h-partners.com>
This commit is contained in:
zgf 2024-08-27 16:48:48 +08:00
parent 6612dea1d5
commit 7252a2fe05
3 changed files with 32 additions and 17 deletions

View File

@ -1,6 +1,7 @@
## 3.1.0-rc.3
- 部分静态webp图片有delay属性导致识别成动图,改用getFrameCount识别
- 修复加载错误图后未去请求排队队列中的请求
- 子线程本地Resource参数类型转换成number
## 3.1.0-rc.2
- 修复宽高不等svg图片显示有毛边

View File

@ -157,10 +157,21 @@ export class ImageKnifeDispatcher {
isWatchProgress = true
}
});
let src: string | number = ""
let moduleName: string = ""
let resName: string = ""
if((imageSrc as Resource).id != undefined) {
moduleName = (imageSrc as Resource).moduleName
src = (imageSrc as Resource).id
if(src == -1) {
resName = (imageSrc as Resource).params![0]
}
} else if(typeof imageSrc == "string") {
src = imageSrc
}
let request: RequestJobRequest = {
context: currentRequest.context,
src: imageSrc,
src: src,
headers: currentRequest.imageKnifeOption.headerOption,
allHeaders: currentRequest.headers,
componentWidth:currentRequest.componentWidth,
@ -176,7 +187,9 @@ export class ImageKnifeDispatcher {
isWatchProgress: isWatchProgress,
memoryKey: memoryKey,
fileCacheFolder: ImageKnife.getInstance().getFileCache()?.getCacheFolder(),
isAnimator:isAnimator
isAnimator:isAnimator,
moduleName: moduleName == "" ? undefined : moduleName,
resName: resName == "" ? undefined : resName
}
if(request.customGetImage == undefined) {
@ -391,12 +404,12 @@ async function requestJob(request: RequestJobRequest, requestList?: List<ImageKn
receiveSize: number = 2000
totalSize: number = 2000
}
let src = typeof request.src == "number" ? request.resName != undefined ? request.resName : request.src + "" : request.src
// 生成文件key
let fileKey = request.engineKey.generateFileKey(request.src, request.signature,request.isAnimator)
let fileKey = request.engineKey.generateFileKey(src, request.signature,request.isAnimator)
// 判断自定义下载
if (request.customGetImage !== undefined && request.requestSource == ImageKnifeRequestSource.SRC) {
if (request.customGetImage !== undefined && request.requestSource == ImageKnifeRequestSource.SRC && typeof request.src == "string") {
// 先从文件缓存获取
resBuf = FileCache.getFileCacheByFile(request.context, fileKey , request.fileCacheFolder)
if (resBuf === undefined) {
@ -524,22 +537,21 @@ async function requestJob(request: RequestJobRequest, requestList?: List<ImageKn
}
}
}
} else if ((request.src as Resource).id !== undefined) { //从资源文件获取
let res = request.src as Resource;
let manager = request.context.createModuleContext(res.moduleName).resourceManager
} else if (typeof request.src == "number") { //从资源文件获取
let manager = request.context.createModuleContext(request.moduleName).resourceManager
if (resBuf == undefined && request.onlyRetrieveFromCache != true && request.requestSource == ImageKnifeRequestSource.SRC) {
if(res.id == -1) {
let resName = (res.params![0] as string)
if(request.src == -1) {
let resName = request.resName as string
resBuf = (await manager.getMediaByName(resName.substring(10))).buffer as ArrayBuffer
} else {
resBuf = manager.getMediaContentSync(res.id).buffer as ArrayBuffer
resBuf = manager.getMediaContentSync(request.src).buffer as ArrayBuffer
}
} else if (resBuf == undefined && request.requestSource != ImageKnifeRequestSource.SRC) {
if(res.id == -1) {
let resName = (res.params![0] as string)
if(request.src == -1) {
let resName = request.resName as string
resBuf = (await manager.getMediaByName(resName.substring(10))).buffer as ArrayBuffer
} else {
resBuf = manager.getMediaContentSync(res.id).buffer as ArrayBuffer
resBuf = manager.getMediaContentSync(request.src).buffer as ArrayBuffer
}
}
}

View File

@ -86,7 +86,7 @@ export interface RequestJobResult {
*/
export interface RequestJobRequest {
context: common.UIAbilityContext,
src: string | PixelMap | Resource,
src: string | number,
headers?: Array<HeaderOptions>,
allHeaders: Map<string, Object>,
componentWidth: number,
@ -101,6 +101,8 @@ export interface RequestJobRequest {
isWatchProgress: boolean
memoryKey: string
fileCacheFolder: string,
isAnimator?: boolean
isAnimator?: boolean,
moduleName?:string,
resName?: string
}