harmony 鸿蒙Worker同步调用宿主线程的接口
Worker同步调用宿主线程的接口
如果一个接口已在宿主线程中实现,Worker可以通过以下方式调用该接口。
以下示例展示了Worker如何同步调用宿主线程的接口。
- 首先,在宿主线程实现需要调用的接口,并创建Worker对象,在Worker对象上注册需要调用的对象。
// IconItemSource.ets
export class IconItemSource {
image: string|Resource = '';
text: string|Resource = '';
constructor(image: string|Resource = '', text: string|Resource = '') {
this.image = image;
this.text = text;
}
}
// WorkerCallGlobalUsage.ets
import worker from '@ohos.worker';
import { IconItemSource } from './IconItemSource';
// 创建Worker对象
const workerInstance: worker.ThreadWorker = new worker.ThreadWorker("entry/ets/pages/workers/Worker.ts");
class PicData {
public iconItemSourceList: IconItemSource[] = [];
public setUp(): string {
for (let index = 0; index < 20; index++) {
const numStart: number = index * 6;
// 此处循环使用6张图片资源
this.iconItemSourceList.push(new IconItemSource('$media:startIcon', `item${numStart + 1}`));
this.iconItemSourceList.push(new IconItemSource('$media:background', `item${numStart + 2}`));
this.iconItemSourceList.push(new IconItemSource('$media:foreground', `item${numStart + 3}`));
this.iconItemSourceList.push(new IconItemSource('$media:startIcon', `item${numStart + 4}`));
this.iconItemSourceList.push(new IconItemSource('$media:background', `item${numStart + 5}`));
this.iconItemSourceList.push(new IconItemSource('$media:foreground', `item${numStart + 6}`));
}
return "setUpIconItemSourceList success!";
}
}
let picData = new PicData();
// 在Worker上注册需要调用的对象
workerInstance.registerGlobalCallObject("picData", picData);
workerInstance.postMessage("run setUp in picData");
- 然后,在Worker中通过callGlobalCallObjectMethod接口可以调用宿主线程中的setUp()方法。
// Worker.ets
import { ErrorEvent, MessageEvents, ThreadWorkerGlobalScope, worker } from '@kit.ArkTS';
const workerPort: ThreadWorkerGlobalScope = worker.workerPort;
try {
// 调用方法无入参
let res: string = workerPort.callGlobalCallObjectMethod("picData", "setUp", 0) as string;
console.error("worker: ", res);
} catch (error) {
// 异常处理
console.error("worker: error code is " + error.code + " error message is " + error.message);
}
你可能感兴趣的鸿蒙文章
0
赞
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦