鸿蒙短信倒计时

2025-04-16 09:31:40
108次阅读
2个回答

发送短信然后开始倒计时,怎样实现退出页面后倒计时不被重置仍在倒计时

收藏11

登录 后回答。没有帐号? 注册 一个。

    2025-06-09 17:46:56
    最佳答案

    我觉得可以定一个长静态变量,倒计时执行也放在外面,不受页面影响

    • kirk
      2025-06-11 22:59:16
      你确定这样可以吗?
    • kirk
      2025-06-11 23:03:35
      我觉得可以
    • GeorgeGcs
      2025-06-14 23:25:07
      你怎么自问自答?【你确定这样可以吗?】【我觉得可以】
    2025-06-14 23:29:35
    最佳答案

    你好。

    你的问题由两方面组成。

    首先你需要将倒计时逻辑,不要放在页面中,而是单例或者vm类中,与界面解耦,通过回调更新给页面。

    之后目前鸿蒙的后台机制,类似于IOS的墓碑机制。退到后台后,一定时间后,APP会处于休眠冻结状态,倒计时会被停止。该问题。

    使用短时任务可以解决该问题。

    let myReason = 'test requestSuspendDelay';
    try {
      let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
        console.info("Request suspension delay will time out.");
      })
      let id = delayInfo.requestId;
      let time = delayInfo.actualDelayTime;
      console.info("The requestId is: " + id);
      console.info("The actualDelayTime is: " + time);
      setInterval(()=>{
        this.intervalN++;
        console.info("The requestId is: " + this.intervalN);
      },1000)
    } catch (error) {
      console.error(`requestSuspendDelay failed. code is ${(error as BusinessError).code} message is ${(error as BusinessError).message}`);
    }