From 4a7a3715a4ba652d6191c9631a6d5ea58eb73f95 Mon Sep 17 00:00:00 2001 From: ZhangQ <12903047+zq-kexin@user.noreply.gitee.com> Date: Tue, 12 Aug 2025 02:37:22 +0000 Subject: [PATCH 1/2] worker Signed-off-by: ZhangQ <12903047+zq-kexin@user.noreply.gitee.com> --- .../main/ets/entryability/EntryAbility.ets | 2 +- entry/src/main/ets/view/AdjustContentView.ets | 9 +++-- entry/src/main/ets/workers/WorkerManager.ets | 37 ++++++++++++------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 85b513a..c2bea47 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -24,7 +24,7 @@ export default class EntryAbility extends UIAbility { } onDestroy() { - WorkerManager.terminalSelf(); + WorkerManager.getInstance().terminalSelf(); hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); } diff --git a/entry/src/main/ets/view/AdjustContentView.ets b/entry/src/main/ets/view/AdjustContentView.ets index 868c4c5..fff9953 100644 --- a/entry/src/main/ets/view/AdjustContentView.ets +++ b/entry/src/main/ets/view/AdjustContentView.ets @@ -21,6 +21,7 @@ import { CommonConstants } from '../common/constant/CommonConstants'; import { AdjustId } from '../viewModel/OptionViewModel'; import { MessageItem } from '../viewModel/MessageItem'; import { WorkerManager } from '../workers/WorkerManager'; +import { hilog } from '@kit.PerformanceAnalysisKit'; @Component @@ -102,11 +103,11 @@ struct SliderCustom { }); aboutToAppear(): void { - WorkerManager.onMessage((event: MessageEvents) => { + WorkerManager.getInstance().onMessage((event: MessageEvents) => { this.updatePixelMap(event); }) - WorkerManager.onExit(); - WorkerManager.onMessageError(); + WorkerManager.getInstance().onExit(); + WorkerManager.getInstance().onMessageError(); } build() { @@ -170,7 +171,7 @@ struct SliderCustom { this.pixelMap.readPixelsToBuffer(bufferArray) .then(() => { let message = new MessageItem(bufferArray, sliderValue, value, type); - WorkerManager.postMessage(message); + WorkerManager.getInstance().postMessage(message); if (this.postState) { this.deviceListDialogController.open(); } diff --git a/entry/src/main/ets/workers/WorkerManager.ets b/entry/src/main/ets/workers/WorkerManager.ets index 1a9ba37..48cb7fe 100644 --- a/entry/src/main/ets/workers/WorkerManager.ets +++ b/entry/src/main/ets/workers/WorkerManager.ets @@ -22,46 +22,57 @@ import { MessageItem } from "../viewModel/MessageItem"; * Main thread worker */ export class WorkerManager { - private static instance: worker.ThreadWorker | undefined = undefined; + private static instance: WorkerManager | undefined = undefined; + private static workerThread: worker.ThreadWorker | undefined = undefined; private constructor() { } - public static getInstance(): worker.ThreadWorker { + public static getInstance(): WorkerManager { if (!WorkerManager.instance) { - WorkerManager.instance = new worker.ThreadWorker(CommonConstants.WORKER_FILE); + WorkerManager.instance = new WorkerManager(); + WorkerManager.workerThread = new worker.ThreadWorker(CommonConstants.WORKER_FILE); } return WorkerManager.instance; } - public static postMessage(message: MessageItem): void { + public postMessage(message: MessageItem): void { try { - WorkerManager.getInstance().postMessage(message); + WorkerManager.workerThread?.postMessage(message); } catch (error) { hilog.error(0x0000, 'WorkerManager', 'Failed to possMessage', `on message error ${JSON.stringify(error)}`); } } - public static onExit(): void { - WorkerManager.getInstance().onexit = () => { + public onExit(): void { + if (!WorkerManager.workerThread) { + return; + } + WorkerManager.workerThread.onexit = () => { hilog.info(0x0000, 'WorkerManager', 'worker exit. Cause: %{public}s'); } } - public static onMessageError(): void { - WorkerManager.getInstance().onmessageerror = (event: MessageEvents) => { + public onMessageError(): void { + if (!WorkerManager.workerThread) { + return; + } + WorkerManager.workerThread.onmessageerror = (event: MessageEvents) => { hilog.error(0x0000, 'WorkerManager', 'Main thread post message error. Cause: %{public}s', `on worker error ${JSON.stringify(event)}`); } } - public static onMessage(callback: (event: MessageEvents) => void): void { - WorkerManager.getInstance().onmessage = callback; + public onMessage(callback: (event: MessageEvents) => void): void { + if (!WorkerManager.workerThread) { + return; + } + WorkerManager.workerThread.onmessage = callback; } - public static terminalSelf(): void { + public terminalSelf(): void { try { - WorkerManager.getInstance().terminate(); + WorkerManager.workerThread?.terminate(); hilog.info(0x0000, 'WorkerManager', 'worker terminal success'); } catch (error) { hilog.error(0x0000, 'WorkerManager', 'Failed to terminalSelf. Cause: %{public}s', -- Gitee From e0af023f81d1afcf3a98d2545f4af1e1a8f052f3 Mon Sep 17 00:00:00 2001 From: ZhangQ <12903047+zq-kexin@user.noreply.gitee.com> Date: Tue, 12 Aug 2025 02:39:02 +0000 Subject: [PATCH 2/2] update entry/src/main/ets/view/AdjustContentView.ets. Signed-off-by: ZhangQ <12903047+zq-kexin@user.noreply.gitee.com> --- entry/src/main/ets/view/AdjustContentView.ets | 1 - 1 file changed, 1 deletion(-) diff --git a/entry/src/main/ets/view/AdjustContentView.ets b/entry/src/main/ets/view/AdjustContentView.ets index fff9953..d84c3e5 100644 --- a/entry/src/main/ets/view/AdjustContentView.ets +++ b/entry/src/main/ets/view/AdjustContentView.ets @@ -21,7 +21,6 @@ import { CommonConstants } from '../common/constant/CommonConstants'; import { AdjustId } from '../viewModel/OptionViewModel'; import { MessageItem } from '../viewModel/MessageItem'; import { WorkerManager } from '../workers/WorkerManager'; -import { hilog } from '@kit.PerformanceAnalysisKit'; @Component -- Gitee