diff --git a/entry/src/main/ets/common/CustomEngineKeyImpl.ets b/entry/src/main/ets/common/CustomEngineKeyImpl.ets index 60af07a..f780cd6 100644 --- a/entry/src/main/ets/common/CustomEngineKeyImpl.ets +++ b/entry/src/main/ets/common/CustomEngineKeyImpl.ets @@ -14,7 +14,7 @@ */ import { IEngineKey, ImageKnifeOption, PixelMapTransformation } from '@ohos/imageknife'; import { SparkMD5 } from '@ohos/imageknife/src/main/ets/3rd_party/sparkmd5/spark-md5'; -import { ImageKnifeRequestSource } from '@ohos/imageknife/src/main/ets/ImageKnifeDispatcher'; +import { ImageKnifeRequestSource } from '@ohos/imageknife/src/main/ets/model/ImageKnifeData'; //全局自定义key demo @Sendable diff --git a/library/src/main/ets/ImageKnife.ets b/library/src/main/ets/ImageKnife.ets index 94202f2..36f0262 100644 --- a/library/src/main/ets/ImageKnife.ets +++ b/library/src/main/ets/ImageKnife.ets @@ -13,11 +13,11 @@ * limitations under the License. */ import { ImageKnifeRequest } from './ImageKnifeRequest'; -import { ReadCacheStrategyType, ImageKnifeData } from './model/ImageKnifeData'; +import { ReadCacheStrategyType, ImageKnifeData, ImageKnifeRequestSource } from './model/ImageKnifeData'; import { MemoryLruCache } from './utils/MemoryLruCache'; import { IMemoryCache } from './utils/IMemoryCache' import { FileCache } from './utils/FileCache'; -import { ImageKnifeDispatcher, ImageKnifeRequestSource } from './ImageKnifeDispatcher'; +import { ImageKnifeDispatcher } from './ImageKnifeDispatcher'; import { IEngineKey } from './key/IEngineKey'; import { HeaderOptions, ImageKnifeOption } from './ImageKnifeOption'; import { DefaultEngineKey } from './key/DefaultEngineKey'; @@ -56,6 +56,15 @@ export class ImageKnife { this.fileCache = new FileCache(context, size, memory) this.fileCache.initFileCache() } + + /** + * 判断文件缓存是否初始化 + * @returns 是否初始化 + */ + public isFileCacheInit(): boolean { + return this.fileCache === undefined ? false : this.fileCache.isFileCacheInit() + } + /** * 全局添加单个请求头 * @param key 请求头属性 diff --git a/library/src/main/ets/ImageKnifeDispatcher.ets b/library/src/main/ets/ImageKnifeDispatcher.ets index 26c9047..7ca5780 100644 --- a/library/src/main/ets/ImageKnifeDispatcher.ets +++ b/library/src/main/ets/ImageKnifeDispatcher.ets @@ -19,7 +19,6 @@ import List from '@ohos.util.List'; import LightWeightMap from '@ohos.util.LightWeightMap'; import { LogUtil } from './utils/LogUtil'; import buffer from '@ohos.buffer'; -import common from '@ohos.app.ability.common'; import { FileCache } from './utils/FileCache'; import fs from '@ohos.file.fs'; import { ImageKnife } from './ImageKnife'; @@ -33,8 +32,7 @@ import { FileTypeUtil } from './utils/FileTypeUtil'; import util from '@ohos.util'; import { IEngineKey } from './key/IEngineKey'; import { DefaultEngineKey } from './key/DefaultEngineKey'; -import { HeaderOptions } from './ImageKnifeOption'; -import { PixelMapTransformation } from './transform/PixelMapTransformation'; +import { ImageKnifeRequestWithSource , ImageKnifeRequestSource , RequestJobResult , RequestJobRequest } from './model/ImageKnifeData' export class ImageKnifeDispatcher { // 最大并发 @@ -116,7 +114,7 @@ export class ImageKnifeDispatcher { customGetImage: currentRequest.imageKnifeOption.customGetImage, onlyRetrieveFromCache: currentRequest.imageKnifeOption.onlyRetrieveFromCache, transformation:currentRequest.imageKnifeOption.transformation, - writeCacheStrategy: currentRequest.imageKnifeOption.writeCacheStrategy, + writeCacheStrategy: ImageKnife.getInstance().isFileCacheInit() ? currentRequest.imageKnifeOption.writeCacheStrategy : WriteCacheStrategyType.Memory, // 未初始化文件缓存时,不写文件缓存 engineKey: this.engineKey, signature: currentRequest.imageKnifeOption.signature, requestSource @@ -246,7 +244,7 @@ async function requestJob(request: RequestJobRequest): Promise = {} @@ -323,9 +321,9 @@ async function requestJob(request: RequestJobRequest): Promise, - allHeaders:Map, - customGetImage?: (context: Context, src: string | PixelMap | Resource) => Promise, - onlyRetrieveFromCache?: boolean - requestSource:ImageKnifeRequestSource - transformation?: PixelMapTransformation - writeCacheStrategy?: WriteCacheStrategyType - signature?: string - engineKey:IEngineKey -} diff --git a/library/src/main/ets/ImageKnifeRequest.ets b/library/src/main/ets/ImageKnifeRequest.ets index 5fc173d..0c06e03 100644 --- a/library/src/main/ets/ImageKnifeRequest.ets +++ b/library/src/main/ets/ImageKnifeRequest.ets @@ -13,12 +13,8 @@ * limitations under the License. */ import { ImageKnifeOption } from './ImageKnifeOption'; -import { ImageKnifeData } from './model/ImageKnifeData'; -import { ImageKnife } from './ImageKnife' import common from '@ohos.app.ability.common'; -import { SparkMD5 } from './3rd_party/sparkmd5/spark-md5' -import { LogUtil } from './utils/LogUtil' -import { ImageKnifeRequestSource } from './ImageKnifeDispatcher'; + export class ImageKnifeRequest { diff --git a/library/src/main/ets/key/DefaultEngineKey.ets b/library/src/main/ets/key/DefaultEngineKey.ets index 8520701..b2d3600 100644 --- a/library/src/main/ets/key/DefaultEngineKey.ets +++ b/library/src/main/ets/key/DefaultEngineKey.ets @@ -16,7 +16,7 @@ import { SparkMD5 } from '../3rd_party/sparkmd5/spark-md5'; import { ImageKnifeOption } from '../ImageKnifeOption'; import { IEngineKey } from './IEngineKey'; import { PixelMapTransformation } from '../transform/PixelMapTransformation'; -import { ImageKnifeRequestSource } from '../ImageKnifeDispatcher'; +import { ImageKnifeRequestSource } from '../model/ImageKnifeData'; @Sendable export class DefaultEngineKey implements IEngineKey { diff --git a/library/src/main/ets/key/IEngineKey.ets b/library/src/main/ets/key/IEngineKey.ets index d8e949a..746df1b 100644 --- a/library/src/main/ets/key/IEngineKey.ets +++ b/library/src/main/ets/key/IEngineKey.ets @@ -12,8 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { ImageKnifeRequestSource } from '../ImageKnifeDispatcher' import { ImageKnifeOption } from '../ImageKnifeOption' +import { ImageKnifeRequestSource } from '../model/ImageKnifeData' export interface IEngineKey { // 生成内存缓存key diff --git a/library/src/main/ets/model/ImageKnifeData.ets b/library/src/main/ets/model/ImageKnifeData.ets index 3ac9632..2330aec 100644 --- a/library/src/main/ets/model/ImageKnifeData.ets +++ b/library/src/main/ets/model/ImageKnifeData.ets @@ -12,6 +12,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { HeaderOptions } from '../ImageKnifeOption' +import { ImageKnifeRequest } from '../ImageKnifeRequest' +import { IEngineKey } from '../key/IEngineKey' +import { PixelMapTransformation } from '../transform/PixelMapTransformation' +import common from '@ohos.app.ability.common'; + export interface ImageKnifeData { source: PixelMap | string, imageWidth: number, @@ -40,3 +46,44 @@ export enum WriteCacheStrategyType { File = 2 } +/** + * 区分是src,placehodler,还是error_holder + */ +export enum ImageKnifeRequestSource { + SRC, + PLACE_HOLDER, + ERROR_HOLDER +} + + +export interface ImageKnifeRequestWithSource { + request: ImageKnifeRequest + source: ImageKnifeRequestSource +} + +/** + * request子线程处理时的返回 + */ +export interface RequestJobResult { + pixelMap: PixelMap | string | undefined + bufferSize: number + fileKey: string +} + +/** + * request子线程处理时的请求参数 + */ +export interface RequestJobRequest { + context: common.UIAbilityContext, + src: string | PixelMap | Resource, + headers?: Array, + allHeaders: Map, + customGetImage?: (context: Context, src: string | PixelMap | Resource) => Promise, + onlyRetrieveFromCache?: boolean + requestSource: ImageKnifeRequestSource + transformation?: PixelMapTransformation + writeCacheStrategy?: WriteCacheStrategyType + signature?: string + engineKey: IEngineKey +} + diff --git a/library/src/main/ets/utils/FileCache.ets b/library/src/main/ets/utils/FileCache.ets index 381096a..f8439eb 100644 --- a/library/src/main/ets/utils/FileCache.ets +++ b/library/src/main/ets/utils/FileCache.ets @@ -103,6 +103,10 @@ export class FileCache { this.isInited = true } + public isFileCacheInit():boolean { + return this.isInited + } + // 添加缓存键值对,同时写文件 put(key: string, value: ArrayBuffer): void { if (key == null || value == null) {