本系列第 5/8 课,建议 45–60 分钟(估算)。先完成上一课。
这课解决什么
多个事件需要更新相同标签,复制积木容易漏改。刷新过程只负责把业务变量转成显示,不改变截止或记录完成,事件负责业务转换后调用它。
先预测,再运行
只调用刷新过程,剩余时间会减少吗?
先记下自己的答案,运行起始工程与完成工程比较;答案见文末。
开始实战
以上一课完成工程为起点,先导入并运行,再另存为本课作业。
完成工程可以查看答案;独立作业请保留自己的修改。
新增或调整的组件
| 实例名 | 组件 | 本课配置 |
|---|---|---|
标签_标题 |
标签 | Width=Fill parent;FontSize=24;TextColor=#183153;Text=专注学习 · 第 5课 |
逐步搭建
- 找出开始、暂停、Timer 中重复的标签赋值。
- 建立刷新过程,显示分钟秒数、状态与任务;把重复段替换成调用。
- 在开始、暂停、Timer 的业务修改后调用刷新;保留输入错误的独立反馈。
- 修改一处显示格式,检查三个入口均同步;用只调用刷新的实验确认它没有业务副作用。

图来自本课最终工程执行积木后的状态,为 HTML 近似预览;不是手机截图。
核心积木与数据流
下面是本课完成工程中的核心代码,包含所需全局变量和过程。可在块图中追踪数值,再回到工程对照完整事件;合并到已有工程时,同名事件合并处理。
global 剩余 = 0
global 状态 = "待开始"
global 任务 = ""
global 完成数 = 0
global 阶段 = "专注"
procedure 刷新() {
标签_剩余.Text = join(floor(剩余 / 60), " 分 ", 剩余 % 60, " 秒")
标签_状态.Text = join(状态, " · ", 阶段, " · ", 任务)
标签_记录.Text = join("已完成 ", 完成数, " 项")
}
中途检查与排错
本课以下控制与数据流已执行最终归档中的真实积木检查。请在伴侣或安装的 APK 中按相同场景操作,记录实际结果;自动检查通过不代表手机已实测。
- 拒绝空任务。
- 非数字、非正数、上限、小数拒绝。
- 2分钟等于120秒。
- 延迟回调按实际时间计算。
- 运行中重复开始不重置。
- 暂停期间不扣时。
- 到期与重复计时回调。
排查时先确定出错的是输入、状态、数据读取还是显示;用标签暂时显示关键值,每次只改变一个条件。
本阶段尚未加入数据保存,关闭应用会丢失任务;计时器用于前台刷新,不是系统后台闹钟。
两个理解题与独立改造
- 只调用刷新过程,剩余时间会减少吗?
- 过程参数与全局变量有什么区别?
独立改造: 把“格式化秒数”提取为有返回值的过程,供其他标签使用。
先完成自己的工程,再对照答案。检查成功路径,也检查空数据、重复操作和取消;写出你改动的规则。
查看预测与练习参考答案
预测: 不会。刷新读取已有剩余;减少剩余的逻辑在 Timer 中。
追踪: 参数是这次调用的数据,全局是共享状态;可复用的格式化过程应接受参数。
改造思路: 过程参数是秒数,返回格式化文本;不要让它依赖全局剩余,这样可以单独测试 0、59、60、120。
完成与下一步
保存自己的工程并导出 .aia;给文件命名以区分本课作业和参考源码。请用自己的话解释本课知识,并展示一次失败输入的处理。
扫码添加客服咨询