HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题
本文旨在纪录自己对TextTimer使用过程的疑惑问题
我在查看教程时候,发现很多博客在onTimer(event: (utc: number, elapsedTime: number) => void) 这里提到elapsedTime:计时器经过的时间,单位为毫秒。我不清楚是否为版本问题。
在我查看version11和version10的api时候,说的都是设置格式的最小单位。

经过个人检验的情况是:version11和version10都是依据格式(format)的最小单位设置的。
例如:
@Entry
@Component
struct TextTimerExample {textTimerController: TextTimerController = new TextTimerController()@State format: string = 'mm:ss.SS'build() {Column() {TextTimer({ isCountDown: true, count: 30000, 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)})Row() {Button("start").onClick(() => {this.textTimerController.start()})Button("pause").onClick(() => {this.textTimerController.pause()})Button("reset").onClick(() => {this.textTimerController.reset()})}}}
}

这里显然·应该是5300毫秒,但是显示530,如果考虑到format中最小为SS,也就是10ms,那么就说得通了
同理:
import router from '@ohos.router'@Entry
@Component
struct TextTimerPage {@State message: string = '通过文本显示计时信息并控制其计时器状态的组件。'@State onTimerContent: string = ''// TextTimer的控制器private controller: TextTimerController = new TextTimerController()build() {Row() {Scroll() {Column() {Text(this.message).fontSize(20).fontWeight(FontWeight.Bold).width('96%')Blank(12)TextTimer({ isCountDown: true, count: 120000, controller: this.controller }).fontSize(20).fontColor(Color.Red).format('mm:ss').onTimer((utc: number, elapsedTime: number) => { // utc 时间戳, elapsedTime计时器经过的时间this.onTimerContent = 'textTimer 时间戳 utc is:' + utc + ', 计时器经过的时间 elapsedTime: ' + elapsedTime;})Blank(12)Row() {Button('计时器启动').width('30%').onClick(() => {this.controller.start();})Button('计时器暂停').width('30%').margin({ left: '2.5%', right: '2.5%' }).onClick(() => {this.controller.pause();})Button('计时器重置').width('30%').onClick(() => {this.controller.reset();})}.alignItems(VerticalAlign.Center)Blank(12)Text(this.onTimerContent).width('96%').fontSize(20).fontColor(Color.Red)Blank(12)Button("文本文档").fontSize(20).backgroundColor('#007DFF').width('96%').onClick(() => {// 处理点击事件逻辑router.pushUrl({url: "pages/baseComponent/textTimer/TextTimerDesc",})})}.width('100%')}}.padding({ top: 12, bottom: 12 })}
}

这里应该是5s,也就是5000ms,如果考虑format中的最小单位为s,也说得通
再次考虑这个情况:
// xxx.ets
@Entry
@Component
struct TextTimerExample {textTimerController: TextTimerController = new TextTimerController()build() {Column() {TextTimer({controller: this.textTimerController}).format('mm:ss:SSS').fontColor(Color.Black).fontSize(50).onTimer((utc: number, elapsedTime: number) => {console.info('textTimer notCountDown utc is:' + utc + ', elapsedTime: ' + elapsedTime)})Row() {Button("start").onClick(() => {this.textTimerController.start();});Button("pause").onClick(() => {this.textTimerController.pause();});Button("reset").onClick(() => {this.textTimerController.reset();});}}}
}

此时就是以毫秒做单位了
但是又出现一个情况:
我师兄在使用version11时候,即使format是SS结尾,也可以到毫秒,这就不清楚什么原因了。
总之,本文只做自己学习中遇到的疑惑纪录。
相关文章:
HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题
本文旨在纪录自己对TextTimer使用过程的疑惑问题 我在查看教程时候,发现很多博客在onTimer(event: (utc: number, elapsedTime: number) > void) 这里提到elapsedTime:计时器经过的时间,单位为毫秒。我不清楚是否为版本问题。 在我查看ver…...
函数指针学习
认识函数指针: 函数指针的用处: 回调函数(以函数指针为参数的参数) 定义带标签的结构体 typedef struct mode { int data; } Node; 标签(mode): mode 是结构体的标签名。在这种定义中,mo…...
『功能项目』武器的切换实例【34】
本章项目成果展示 我们打开上一篇33战士的A键连击的项目, 本章要做的事情是按键盘E键切换职业时切换手中的武器 首先在资源商店下载免费的武器模型 创建一个空物体 命名为WeaponPos 将武器预制体拖拽至WeaponPos (注意调整空物体位置就可以后续文章会更…...
github中action作用和讲解
1,简介 GitHub Actions 是 GitHub 的一个自动化功能,它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务,比如: 自动测试:每当代码被推送到仓库时,自动运行测试…...
数据库管理-第238期 23ai:全球分布式数据库-架构与组件(20240904)
数据库管理238期 2024-09-04 数据库管理-第238期 23ai:全球分布式数据库-架构与组件(20240904)1 架构图2 分片数据库与分片3 Shard Catalog4 Shard Director5 Global Service6 管理界面总结 数据库管理-第238期 23ai:全球分布式数…...
GIT | git提交注释自动添加信息头
GIT | git提交注释自动添加信息头 时间:2024年9月6日10:20:11 文章目录 GIT | git提交注释自动添加信息头1.操作2.commit-msg文件 1.操作 2.commit-msg文件 #!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit&q…...
React 全屏问题解决方案
1、全屏下弹窗被遮挡的问题 参考:https://www.jianshu.com/p/b22d1ad9533e 原因: 需要全屏的节点部分被传入 screenfull 中,弹窗的层级永远低于全屏,所以被遮挡。 解决方法: 方式1:把整个 body 全屏&…...
Java JVM 垃圾回收算法详解
Java 虚拟机(JVM)是运行 Java 应用程序的核心,它的垃圾回收(Garbage Collection, GC)机制是 JVM 中非常重要的一个部分。垃圾回收的主要任务是自动管理内存,回收那些不再被使用的对象,从而释放内…...
hadoop dfs web页面访问增加鉴权
前言 装好了Hadoop,通过浏览器访问,发现竟然不需要鉴权就能访问,且暴露了很多服务器层文件路径信息,基于多年积累的安全意识,必须得配置些鉴权信息,就有了该文,仅做学习记录,下次自…...
LCP 485. 最大连续 1 的个数[lleetcode -11]
从今天起,我们的算法开始研究搜索,首先就是DFS深度优先搜索(depth-first seach,DFS)在搜索到一个新的节点时,立即对该新节点进行遍 历;因此遍历需要用先入后出的栈来实现,也可以通过…...
关于宏任务的说法已经过时
关于宏任务w3c的最新解释,(mdn已经搜不到宏任务队列) ● 每个任务都有一个任务类型,用一个类型的任务必须在一个队列,不同类型的任务可以分属不同的队列。在一次事件循环当中,浏览器可以根据实际情况从不同…...
Java箱与泛型
大O的渐进表示法 大 O 的渐进表示法 去掉了那些对结果影响不大的项 ,简洁明了的表示出了执行次数。 void func1(int N){ int count 0; for (int i 0; i < N ; i) { for (int j 0; j < N ; j) { count; } } for (int k 0; k < 2 * N ; k) { count; } in…...
QT如何判断一个文件是否存在
在Qt中,判断一个文件是否存在是一个常见的操作,可以通过QFile类和QDir类来实现。不过,对于简单的文件存在性检查,QFile类提供的接口更为直接。下面是一个使用QFile类来判断文件是否存在的例子: #include <QFile>…...
Vim笔记
【指尖飞舞:vscode vim 高效开发(系列视频)】https://www.bilibili.com/video/BV1z541177Jyp16&vd_source23e4761174881d73295e362ffd706749 Vscode vim插件配置-CSDN博客 g_跳到行尾最后一个非空字符 gd :go to definition ctrl (o): …...
宝塔部署Vue项目解决跨域问题
一、前言 使用宝塔面板部署前端后端项目相比用命令行进行部署要简单许多,宝塔的可视化操作对那些对Linux不熟悉的人很友好。使用宝塔部署SpringBoot后端项目和Vue前端项目的方法如下: 1、视频教程 2、文字教程1 3、文字教程2 以上的教程完全可以按照步骤…...
C++智能指针简述
auto_ptr 设计目的:超出作用域,自动释放内存。所有权传递:拷贝auto_ptr时,原指针失效,释放所有权;新指针获得所有权。总而言之,允许通过拷贝转移所有权,独占所有权。缺陷࿱…...
龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮
本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了改进和优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以…...
Android Camera系列(二):TextureView+Camera
两岸猿声啼不住,轻舟已过万重山—李白 Android Camera系列(一):SurfaceViewCamera Android Camera系列(二):TextureViewCamera Android Camera系列(三):GLS…...
DFS算法专题(一)——二叉树中的深搜【回溯与剪枝的初步注入】
目录 1、DFS算法简介 2、算法实战应用【leetcode】 2.1 计算布尔二叉树的值 2.1.1 算法原理 2.1.2 算法代码 2.2 求根节点到叶节点数字之和 2.2.1 算法原理 2.2.2 算法代码 2.3 二叉树剪枝 2.3.1 算法原理 2.3.2 算法代码 2.4 验证二叉搜索树 2.4.1 算法原理 …...
AWS SES服务 Golang接入教程(排坑版)
因为刚来看的时候 也迷迷糊糊的 所以 先讲概念 再上代码 一 基础设置 这里需要完成两个最基础的设置任务 1 是验证至少一个收件电子邮箱 2 【很关键】是验证发送域。即身份里的域类型的身份。(可以理解为配置你的域名邮箱服务器(SMPT)为亚马…...
手机也能跑AI?实测3B以下小模型在安卓/iOS端的部署教程(附性能对比)
手机端AI模型实战:3B以下小模型在安卓/iOS的部署与优化指南 当ChatGPT需要数据中心级算力支撑时,你可能没想到自己的手机也能运行类似技术。本文将带你探索移动端AI部署的完整方案——从Termux环境配置到CoreML模型转换,实测Redmi Note 12 Tu…...
PyTorch 2.8 GPU算力优化部署教程:RTX 4090D显存利用率提升至92%
PyTorch 2.8 GPU算力优化部署教程:RTX 4090D显存利用率提升至92% 1. 环境准备与快速验证 在开始深度学习项目前,确保你的硬件配置符合以下要求: 显卡:NVIDIA RTX 4090D 24GB显存驱动版本:550.90.07或更高系统内存&a…...
semi-utils:批量添加专业水印的智能解决方案
semi-utils:批量添加专业水印的智能解决方案 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 作为一名摄影爱好者或专业摄影师ÿ…...
PhotoMaker行业应用报告:广告、影视与游戏领域的案例分析
PhotoMaker行业应用报告:广告、影视与游戏领域的案例分析 【免费下载链接】PhotoMaker 项目地址: https://ai.gitcode.com/hf_mirrors/TencentARC/PhotoMaker PhotoMaker是一款通过堆叠ID嵌入技术实现逼真人物照片定制的AI工具,能够帮助创作者快…...
RK3588开发板USB转CAN踩坑实录:CH341成功驱动与PCAN内核编译全流程
RK3588开发板USB转CAN实战指南:CH341与PCAN驱动深度解析 当工业控制、车载电子或机器人系统需要扩展CAN总线接口时,RK3588开发板配合USB转CAN模块成为工程师的热门选择。本文将深入探讨两种经过验证的解决方案——CH341转CAN和PCAN模块,从硬件…...
别再用subprocess了!Mojo原生FFI直连Python C API的5种安全模式,含CPython 3.11+PyPy兼容性矩阵表
第一章:Mojo 与 Python 混合编程案例 生产环境部署Mojo 作为新兴的系统级编程语言,原生兼容 Python 生态,支持在关键性能路径中无缝调用 Mojo 编译模块,同时复用 Python 的成熟工具链与部署基础设施。在生产环境中,典型…...
【05-log-+-diff:看懂你改了什么、历史是什么】
第五篇:log diff:看懂你改了什么、历史是什么会提交只是第一步,会"读"历史才是真的用上了 Git。这篇教你把 log 和 diff 玩出花来。git log:查看提交历史 git log默认输出太详细,通常用这些参数来精简&…...
互联网大厂Java求职者面试全场景详解(含技术栈解析与问答)
互联网大厂Java求职者面试全场景详解(含技术栈解析与问答) 文章标签 Java SE, Jakarta EE, JVM, Spring Boot, Maven, 微服务, 消息队列, 互联网大厂面试, 求职招聘, 技术问答 文章简述 本文围绕互联网大厂Java求职者面试场景,设计了由严肃面…...
intv_ai_mk11惊艳效果:输入‘用小学生能懂的话解释Transformer’→输出比喻+图示描述+小练习
intv_ai_mk11惊艳效果:输入用小学生能懂的话解释Transformer→输出比喻图示描述小练习 1. 效果展示开场 当我第一次尝试让intv_ai_mk11解释Transformer这个复杂概念时,我完全没想到它会给出如此惊艳的答案。我输入了一个看似简单的请求:&qu…...
Java服务在Istio中Metrics丢失、Tracing断链?OpenTelemetry + Istio Telemetry V2精准对齐配置
第一章:Java服务在Istio中Metrics丢失与Tracing断链的根因剖析当Java应用以Sidecar模式接入Istio时,常出现Prometheus采集不到服务间HTTP指标(如istio_requests_total)、Jaeger/Zipkin中Span链路在Java服务入口处中断等现象。这些…...
