HarmonyOS鸿蒙Next中TextTimer组件onTimer锁屏状态和应用后台状态不触发

HarmonyOS鸿蒙Next中TextTimer组件onTimer锁屏状态和应用后台状态不触发 TextTimer组件onTimer锁屏状态和应用后台状态不触发,无法触发UI刷新,内容卡住

  1. 点击获取验证码开始倒计时,倒计时过程中锁屏或把应用置于后台状态
  2. 倒计时结束由于onTimer不触发,无法判断,UI无法刷新

详细描述: 在点击获取验证码之后,需要开启倒计时60秒来进行计数,但是TextTimer 无法设置其他内容,只能够显示倒计时中展示的格式内容,所以如果要显示 “获取验证码”和倒计时数值还有‘重新获取验证码’,需要使用Text和TextTimer 来配合使用,于是写了如下代码来控制相互的显示,主要用了visibility和onTimer事件,问题结果是卡在‘1秒后重新发送’,无法刷新


更多关于HarmonyOS鸿蒙Next中TextTimer组件onTimer锁屏状态和应用后台状态不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

关键代码更改为下面可解决问题:

TextTimer({
  isCountDown: true,
  count: this.count,
  controller: this.countDownTextTimerController
})

  .contentModifier(this.myTimerModifier)

  .onTimer((utc: number, elapsedTime: number) => {

    let leftTime = ((this.count - elapsedTime * 10) / 1000)

    this.downTime = leftTime.toFixed(0)

    console.log('TextTimer .....    ' + this.downTime)

    if (this.downTime == '1') {

      setTimeout(() => {

        this.visible3 = 0

        this.visible2 = 2

      }, 1000)

    } else if(leftTime <= 0){

      this.visible3 = 0

      this.visible2 = 2

    }
  })

  .onAppear(()=>{

    console.log('testAppear','onAppear')

  })

  .margin({
    left: 10
  })

  .visibility(this.visible2)

更多关于HarmonyOS鸿蒙Next中TextTimer组件onTimer锁屏状态和应用后台状态不触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,TextTimer组件的onTimer事件在锁屏状态和应用后台状态下可能不会触发。这是因为系统在锁屏或应用进入后台时,为了节省资源和电量,可能会限制或暂停某些定时任务的执行。具体来说,锁屏状态下,系统会限制后台应用的CPU和网络资源使用,导致定时器无法正常触发。而应用进入后台时,系统可能会将应用挂起,进一步导致定时器事件无法执行。如果需要确保定时器在锁屏或后台状态下仍能触发,可以考虑使用系统提供的后台任务管理机制或持久化任务服务。

在HarmonyOS鸿蒙Next中,TextTimer组件的onTimer事件在锁屏状态和应用后台状态可能不会触发,这是因为系统为了节省资源,限制了后台任务的运行。要解决这个问题,可以考虑使用后台任务管理机制,如Background Task Manager,申请后台执行权限,或使用ServiceWorkScheduler来确保定时任务在后台和锁屏状态下仍能执行。同时,确保应用的电池优化设置不会限制后台活动。

回到顶部