OpenHarmony开发者论坛
标题:
OpenHarmony ui中循环处理问题
[打印本页]
作者:
adamsun
时间:
昨天 17:03
标题:
OpenHarmony ui中循环处理问题
[md]### 【问题描述】
1. 在index.ets中不断的调用native c++层的接口去获取图像数据,然后将图像数据送到canvas中显示,ets中有没有类似android 的Thread线程的处理方式,起一个线程while循环不断的去调用接口捞取数据处理?
2. 尝试使用worker线程处理,写了一个测试的worker的处理代码,在worker里面循环调用postMessage回发消息到主线程,会导致主线程阻塞,3秒超时后应用挂掉。
```
async function start() : Promise<void> {
while (true) {
workerPort.postMessage("capture ..........."); //此处不调用postMessage回发消息则可以正常使用
}
}
workerPort.onmessage = async function (data) {
let cmd : number = data.data;
hilog.info(0x0000, 'testTag', 'recv cmd : %{public}d', cmd);
if (cmd == 1)
{
setTimeout(() => {
start();
}, 1000);
}
else {
hilog.info(0x0000, 'testTag', 'not capture');
workerPort.postMessage("not capture");
}
}
```
3. 运行结果、错误截图
![image.png](
https://forums-obs.openharmony.c ... d1ky7q37m7qd9le.png
"image.png")
4. 在ets里面使用定时器去捞取native c++层的图像数据然后送显, 勉强可以使用,不过会出现卡顿,而且定时器的时间不能太短,太短的话没有效果(1秒可能会获取30帧数据)
5. ui层不断的调用native c++接口读取图像数据, 然后送到canvas中显示,1秒可能30+帧数据
### 【运行环境】
硬件:
ROM版本:
DevEvoStudio版本:4.0
SDK版本:ohos 4.2 API 11
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5