HarmonyOS 鸿蒙Next setInterval倒计时 在倒计时的状态下收起APP,回到桌面,倒计时时间不准确
HarmonyOS 鸿蒙Next setInterval倒计时 在倒计时的状态下收起APP,回到桌面,倒计时时间不准确
当前使用方式:setInterval,1分种后clearInterval。
看了文档的短时任务,24小时配额默认为10分钟,配额消耗完后不允许再申请短时任务,如果多次获取验证码导致配额消耗完,后续又会出现上述问题。又不太像是需要长时任务app。
更多关于HarmonyOS 鸿蒙Next setInterval倒计时 在倒计时的状态下收起APP,回到桌面,倒计时时间不准确的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
TextTimer组件提供了通过文本显示计时信息并控制其计时器状态的功能。
可参考下面demo
@Entry
@Component
struct TextTimerExample {
textTimerController: TextTimerController = new TextTimerController()
@State format: string = 'ss'
build() {
Column() {
Row(){
TextTimer({ isCountDown: true, count: 59000, controller: this.textTimerController })
.format(this.format)
.fontColor(Color.Black)
.fontSize(50)
.onTimer((utc: number, elapsedTime: number) => {
console.info('textTimer notCountDown utc is:' + utc + ', elapsedTime: ' + elapsedTime)
})
Text("秒")
}
Row() {
Button("start").onClick(() => {
this.textTimerController.start()
})
Button("pause").onClick(() => {
this.textTimerController.pause()
})
Button("reset").onClick(() => {
this.textTimerController.reset()
})
}
}
}
}
更多关于HarmonyOS 鸿蒙Next setInterval倒计时 在倒计时的状态下收起APP,回到桌面,倒计时时间不准确的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以用textTimer来实现倒计时,下面是个简单的demo,可供参考:
@Entry
@Component
struct Page {
@State elapsedTime: number = 0;
textTimerController: TextTimerController = new TextTimerController()
build() {
Column() {
Row() {
Button('发送验证码')
.onClick(() => {
this.textTimerController.start()
})
TextTimer({ isCountDown: true, count: 59000, controller: this.textTimerController })
.format("s")
.onTimer((utc: number, elapsedTime: number) => {
this.elapsedTime = elapsedTime
})
}
.margin({ top: 25 })
.visibility(this.elapsedTime == 59000 ? Visibility.None : Visibility.Visible)
Button('重新发送')
.onClick(() => {
this.textTimerController.reset()
this.textTimerController.start()
})
}
.width('100%')
.height('100%')
}
}
在HarmonyOS鸿蒙Next系统中,使用setInterval
进行倒计时时,若应用在倒计时过程中被收起并回到桌面,由于系统资源管理和进程调度的原因,setInterval
的精确度可能会受到影响。
HarmonyOS为了优化资源使用,可能会将后台应用的执行频率降低,导致setInterval
的回调不再按预期的时间间隔触发。这种情况下,倒计时时间可能会出现偏差。
为了应对这一问题,开发者可以考虑以下几种方式(注意,这里不给出具体代码或建议,仅说明思路):
-
使用系统定时任务:探索HarmonyOS提供的系统级定时任务API,这些API通常能在应用不在前台时保持较高的精度。
-
持久化计时状态:在应用被收起时,将当前的计时状态持久化(如保存到本地文件或数据库),并在应用重新打开时恢复该状态,同时根据系统时间进行校准。
-
前台服务:如果业务逻辑允许,可以考虑使用前台服务来保持应用的部分功能在后台运行,但这会影响用户体验和电池续航。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html