HarmonyOS5 NEXT 倒计时功能实现
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、TextTimer 组件和setInterval的区别二、使用步骤1.setInterval代码实现2.TextTimer的代码实现总结前言提示在实现倒计时功能的时候我们一般会用setinterval()来实现可能会出现一种时间精度问题所以今天我们使用一种鸿蒙系统自带的TextTimer组件实现使用场景文本计时器组件常用于倒计时、运动计时等场景提示以下是本篇文章正文内容下面案例可供参考一、TextTimer 组件和setInterval的区别对比维度TextTimer 组件setInterval本质鸿蒙内置 UI 组件渲染 计时一体JS 逻辑定时器纯逻辑无界面使用目的单纯展示倒计时时间只做计时 UI 展示自定义复杂业务逻辑倒计时判断、接口轮询、弹窗、蓝牙、数据校验时间精度毫秒级原生渲染计时稳定无累积误差受主线程阻塞影响长时间运行会累积时间偏移变量维护无需自己定义剩余秒数变量组件内部托管时间必须手动定义 State 变量存储剩余时间自己做减法时间格式化内置format一键ss / mm:ss / hh:mm:ss需要自己手写函数拼接时分秒字符串自动停止支持设置总时长时间到自动停止计时必须手动判断数值调用 clearInterval 销毁生命周期销毁页面销毁自动停止无内存泄漏风险页面退出必须手动 clearInterval否则内存泄漏、后台持续执行回调能力仅提供计时时间回调适合单纯展示回调内可写任意复杂逻辑字符串匹配、弹窗、震动、网络请求、分支判断适用场景简单静态倒计时 UI活动倒计时、纯计时展示你的业务车辆倒计时 判断预估8秒有车、匹配字符串、触发提醒、多分支业务逻辑二、使用步骤1.setInterval代码实现private estArriCountdownTimerId:number|nullnull State countdownTime:number10 estimatedArrivalCountdown(){ if(this.estArriCountdownTimerId !null){ this.clearTimer(); } this.estArriCountdownTimerIdsetInterval((){ this.countdownTime--; if(this.countdownTime 0){ this.clearTimer(); } },1000); } // 清除定时器封装 clearTimer() { if (this.estArriCountdownTimerId ! null) { clearInterval(this.estArriCountdownTimerId) this.estArriCountdownTimerId null } }2.TextTimer的代码实现Entry Component export struct VideoPage { private estArriCountdownTimerId:number|nullnull State countdownTime:number10 getMainTitleText(content:string){ const reg /^预估(\d)秒有车$/; const resultreg.exec(content); if(result){ return true } return false; } aboutToDisappear(): void { this.clearTimer(); } private countDownTextTimerControllernew TextTimerController() State private timerModifier: TextTimerModifier new TextTimerModifier(,false); Builder textTimerBuilder(textInfo:string) { // 马上用车 TextTimer({ isCountDown: true, count: 60 * 1000, controller: this.countDownTextTimerController }) .width(100%) .contentModifier(this.timerModifier) .format(ss) .onTimer((utc: number, elapsedTime: number) { console.log(文本定时器是utcelapsedTime) }) .onAppear((){ const result this.getMainTitleText(textInfo); this.timerModifier.textInfotextInfo this.timerModifier.isCountDownresult if(result){ this.countDownTextTimerController.start() } }) } build() { NavDestination(){ Column(){ this.textTimerBuilder(预估60秒有车); }.width(100%).height(100%).backgroundColor(Color.Pink).justifyContent(FlexAlign.Center) } } } class TextTimerModifier implements ContentModifierTextTimerConfiguration{ textInfo:string isCountDown:boolean constructor(textInfo:string,isCountDown:boolean) { this.textInfotextInfo this.isCountDownisCountDown } applyContent(): WrappedBuilder[TextTimerConfiguration] { return wrapBuilder(buildTextTimer); } } Builder function buildTextTimer(config: TextTimerConfiguration){ Text( (config.contentModifier as TextTimerModifier).isCountDown ? 预估${(Math.max(config.count / 1000 - config.elapsedTime, 0))}秒有车就来了 :${(config.contentModifier as TextTimerModifier).textInfo ?? }) .id(taxi_order_calling_title) .fontWeight(500) .fontSize(18) .lineHeight(24) }总结提示这里对文章进行总结例如以上就是今天要讲的内容本文仅仅简单介绍了TextTimer和setinterval的使用方法和场景大家可以根据使用场景选择不同的倒计时实现方案。

相关新闻

CICFlowMeter Python版 v0.5.0 实战:单命令提取80+维流量特征

CICFlowMeter Python版 v0.5.0 实战:单命令提取80+维流量特征

CICFlowMeter Python版 v0.5.0 实战:单命令提取80维流量特征在网络安全和数据分析领域,流量特征提取是一项基础而关键的工作。传统基于Java的CICFlowMeter虽然功能强大,但其复杂的Java/Gradle环境配置让许多Python技术栈的用户望而却步。本文…

2026/7/10 3:25:57阅读更多 →
Maya 2026 Windows本地化部署:清理、安装、激活与错误1625深度排障

Maya 2026 Windows本地化部署:清理、安装、激活与错误1625深度排障

1. 这不是“破解教程”,而是一份面向真实工作流的Maya部署实操手记我用Maya带过七届建模动画班,也给四家中小型视觉工作室做过技术选型支持。过去三年里,光是帮同事和学员处理“安装失败”“激活异常”“界面错乱”“插件不加载”这类问题&am…

2026/7/10 3:25:57阅读更多 →
PixVerse Team Ultra:AI视频生成从个人到团队协作的完整指南

PixVerse Team Ultra:AI视频生成从个人到团队协作的完整指南

最近在AI视频生成领域,一个消息让不少团队开发者兴奋起来:PixVerse正式推出了Team Ultra团队方案。这不仅仅是简单的套餐升级,而是标志着AI视频生成从个人玩具向团队生产力工具的关键转变。 如果你还在为团队成员共享AI视频生成账号而烦恼&a…

2026/7/10 3:20:57阅读更多 →
禅道开源版22.3.stable发布:优化Jira数据API导入机制,提升使用体验和效率!

禅道开源版22.3.stable发布:优化Jira数据API导入机制,提升使用体验和效率!

禅道开源版22.3.stable重磅发布 禅道开源版22.3.stable发布啦!本次发布优化了Jira数据API导入机制,修复已知Bug。新版本将为用户带来更好的使用体验和更高的工作效率。那么,具体有哪些新增功能呢? 新增功能点 优化Jira数据API导入…

2026/7/10 4:31:02阅读更多 →
Rust与Tauri构建5MB轻量Markdown阅读器实战

Rust与Tauri构建5MB轻量Markdown阅读器实战

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 上周,我花了两天时间,把一个困扰我很久的问题给解决了。 事情是这样的:我平时写技术文档、博客草…

2026/7/10 4:31:02阅读更多 →
COMSOL 6.3企业级部署:安装、验证与NUMA感知性能调优

COMSOL 6.3企业级部署:安装、验证与NUMA感知性能调优

1. 项目概述:为什么COMSOL 6.3的安装不是“点下一步”那么简单你是不是也经历过——花两小时下载完8GB安装包,双击setup.exe后卡在“正在初始化Java环境”,重装JDK、改系统变量、关杀毒软件、以管理员身份运行……最后发现是COMSOL自带的Java…

2026/7/10 4:31:02阅读更多 →
电阻硫化失效分析:从Ag₂S结晶到开路,5步定位与3种防护方案

电阻硫化失效分析:从Ag₂S结晶到开路,5步定位与3种防护方案

电阻硫化失效深度解析:从机理诊断到工程防护的全套解决方案当一块电路板在硫化环境中悄然失效时,你可能不会立即听到"啪"的爆裂声,但会观察到设备性能的渐进式劣化——这正是电阻硫化失效的典型特征。这种"慢性病"在工业…

2026/7/10 4:31:02阅读更多 →
Ghost 11.5.1 多分区备份实战:C盘D盘双盘镜像,压缩比与耗时实测对比

Ghost 11.5.1 多分区备份实战:C盘D盘双盘镜像,压缩比与耗时实测对比

Ghost 11.5.1 多分区备份实战:C盘D盘双盘镜像,压缩比与耗时实测对比对于需要同时备份系统盘和数据盘的用户来说,Ghost依然是最可靠的选择之一。本文将深入探讨如何利用Ghost 11.5.1高效完成C盘和D盘的双盘备份,并通过实测数据对比…

2026/7/10 4:31:02阅读更多 →
51单片机定时器T0/T1 4种工作方式对比:从13位到16位,初值计算与适用场景

51单片机定时器T0/T1 4种工作方式对比:从13位到16位,初值计算与适用场景

51单片机定时器T0/T1工作方式深度解析:从13位到16位的实战指南在嵌入式系统开发中,精确的时间控制是核心需求之一。51单片机通过其内置的定时器/计数器模块,为开发者提供了灵活的时间管理工具。本文将全面剖析51单片机中T0和T1定时器的四种工…

2026/7/10 4:26:02阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/9 5:56:19阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/9 9:45:20阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/9 2:47:07阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/9 9:45:20阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →