!292 修复preLoad接口失效

Merge pull request !292 from zgf/master
This commit is contained in:
openharmony_ci 2024-06-03 07:52:15 +00:00 committed by Gitee
commit 804049b36b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 51 additions and 1 deletions

View File

@ -4,6 +4,7 @@
- 修复懒加载在多次点击出现卡死的问题
- 支持多种组合变换
- 提供清理缓存能力
- 修复preLoad接口失效
## 2.2.0-rc.2
- ImageKnife支持下采样

View File

@ -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<void> {
await this.mutex.lock(async () => {