移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (7) - 主循环

在 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 中,对话框后面的窗口本身就是不可操作的。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值