logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

茶器艺科智造HarmonyOS应用实战-66-启动屏和布局补偿的setTimeout没有句柄,页面离开后为何仍可能回写状态:用generation封住延迟回调

页面进入时安排了两次延迟动作:120ms 后复查布局,1300ms 后隐藏启动层。两次 `setTimeout` 都没有保存句柄,因此页面若在等待期间离开,无法主动取消;如果用户很快再次进入,旧一轮回调还可能与新一轮页面状态交错。本文不讨论延迟数值是否合适,而是把回调的所有权和有效代际补完整。

文章图片
茶器艺科智造HarmonyOS应用实战-65-订单key把status和progress也拼进去,进度一变为何整张卡片像新节点:稳定身份与展示状态要分开

商城列表把 `id:status:progress` 拼成 `ForEach` 的 key。订单每推进一次,key 也跟着变化,框架看到的就不再是“同一订单更新了内容”,而更像“旧身份消失、新身份出现”。与此同时,订单 ID 只靠 `Date.now` 生成,还留下同一毫秒创建时的碰撞窗口。本篇分别处理渲染身份和业务身份,避免用展示字段弥补 ID 设计。

文章图片
茶器艺科智造HarmonyOS应用实战-64-新送印会强制完成上一笔pending,为什么单槽调度容不下并发订单:把状态转换改成按订单管理

商城列表已经允许同时出现多笔订单,送印调度却仍只记一组 timer、订单 ID 和截止时间。第二笔送印到来时,代码先推进上一笔,再把这组字段整体覆盖;表面上是“继续处理”,实质上是用新订单改写旧订单的运行上下文。本文把问题收窄到一个核心:订单是多实例,调度状态也必须按订单区分。

文章图片
茶器艺科智造HarmonyOS应用实战-63-送印状态只存在三个页面字段里,进程重启后待处理订单为何永远不再推进:持久化任务截止时间

订单数组已经写进 Preferences,因此进程重启后仍能看到 `pending` 订单;但负责推进它的订单 ID 和截止时间只保存在页面字段里。页面消失时计时句柄和字段一起消失,重新打开只能恢复“待处理”这个结果,却恢复不了“何时应该进入下一状态”的依据。

文章图片
茶器艺科智造HarmonyOS应用实战-62-每42ms加5%,后台节流后切片为何忽快忽慢:让模拟进度由经过时间而不是回调次数决定

切片模拟把“定时器回调了一次”直接换算成“进度增加 5%”,再预约 42ms 后执行下一次。只要回调发生得不准时,进度对应的真实时长就会改变:回调密集时显得快,系统繁忙或后台节流时又会拖长。本文改用经过时间推导业务进度,让定时器只负责唤醒刷新,并明确后台继续或暂停的产品语义。

文章图片
茶器艺科智造HarmonyOS应用实战-61-打印机名称、IP和端口填什么都能显示连接成功:在创建订单前建立端点校验门

打印机弹窗里有名称、IP 和端口三个输入框,但“开始连接”并没有消费这些输入来判断端点是否成立。按钮直接进入成功回调,随后创建订单并展示连接成功。于是页面上的“成功”只说明点击事件走到了回调,并不说明输入合法,更不说明打印机可达。本文据此拆分端点解析、网络握手和订单创建三道门,强调输入合法不等于设备可达。

文章图片
茶器艺科智造HarmonyOS应用实战-60-五个@Watch连续触发五次drawOnce,拖动杯型参数为何雷达图反复重绘:用帧内合并收口Canvas更新

ArchiveRadarCanvas 的五个 Prop 都 Watch 同一个回调。一次预设切换若连续更新五个参数,就可能多次进入 `drawOnce()`,而每次绘制都要清屏并重画网格、轴线、多边形和文字。单个 Watch 没有错,问题是多个字段共同描述一张雷达图,却没有共享一次“本轮只画最终状态”的调度。

文章图片
茶器艺科智造HarmonyOS应用实战-59-animate从true切成false,星尘定时器为何不会停:让ArkUI Prop变化真正控制Canvas生命周期

ChaqiStarfieldCanvas 每 40ms 绘制 90 个粒子。`animate` 虽然是外部传入的 Prop,却只在启动时被读取,没有 Watch;因此页面仍可见时把它从 `true` 切到 `false`,已经创建的 interval 不会因为字段值变化而自动停止。

文章图片
茶器艺科智造HarmonyOS应用实战-58-五类智能体错误挤进一个字符串,取消操作为何还会留下旧提示:给AgentFrameworkKit回调建立可恢复状态

两处入口分别用 switch 把 1022400010—1022400014 映射成字符串。表面上只是几段提示文案,实际上取消、隐私、账号、网络、服务和未知错误需要的后续动作并不相同;如果组件只保存上一次 `errorText`,一次无提示的取消还可能把旧错误留在界面上。

文章图片
茶器艺科智造HarmonyOS应用实战-57-Agent ID和queryText在两处各写一遍,改提示词为何容易只改一半:把智能体配置收回单一来源

HSP 的 ChaqiAgentButton 与 entry 的 ChaqiAgentPage 都声明同一个 Agent ID 和默认 queryText。当前值虽然一致,但“一致”只是这次静态检查的结果,不是工程结构能够持续保证的约束。下一次更换智能体或调整首问时,只要漏改一个入口,同一个产品就会出现两套智能体行为。

文章图片
    共 289 条
  • 1
  • 2
  • 3
  • 29
  • 请选择