在 AWTK-Android 和 AWTK-IOS 中,使用的 SDL 库,自己分发事件,可以完全控制主循环。但是在 AWTK-HarmonyOS 中,使用的是系统的事件循环,在系统主循环中周期的调用 main_loop_step 函数。
1. 周期定时器
- 页面显示时,启动周期定时器,调用 awtk_napi.update 函数。
onPageShow() {
this.refreshTimerID = setInterval(() => {
awtk_napi.update();
}, 16);
}
- 页面隐藏时,清除周期定时器。
onPageHide() {
clearTimeout(this.refreshTimerID);
this.refreshTimerID = 0;
}
2. 调用 main_loop_step 函数
void AwtkApp::Update(void) {
if (mWidth > 0 && mHeight > 0) {
main_loop_step(main_loop());
}
}
这个做法和 AWTK-WEB 中的做法类似,在周期定时器中调用 main_loop_step 函数。所以同样有个小问题:无法使用模态对话框,不过问题不大,因为在 AWTK 中,对话框后面的窗口本身就是不可操作的。


被折叠的 条评论
为什么被折叠?



