编程基础与事件状态 05:用过程集中刷新界面

课程首页 · 全部知识课程 · 返回专题主页

本系列第 5/8 课,建议 45–60 分钟(估算)。先完成上一课。

下载本课完成工程 .aia

这课解决什么

多个事件需要更新相同标签,复制积木容易漏改。刷新过程只负责把业务变量转成显示,不改变截止或记录完成,事件负责业务转换后调用它。

先预测,再运行

只调用刷新过程,剩余时间会减少吗?

先记下自己的答案,运行起始工程与完成工程比较;答案见文末。

开始实战

以上一课完成工程为起点,先导入并运行,再另存为本课作业。

完成工程可以查看答案;独立作业请保留自己的修改。

新增或调整的组件

实例名 组件 本课配置
标签_标题 标签 Width=Fill parent;FontSize=24;TextColor=#183153;Text=专注学习 · 第 5课

逐步搭建

  1. 找出开始、暂停、Timer 中重复的标签赋值。
  2. 建立刷新过程,显示分钟秒数、状态与任务;把重复段替换成调用。
  3. 在开始、暂停、Timer 的业务修改后调用刷新;保留输入错误的独立反馈。
  4. 修改一处显示格式,检查三个入口均同步;用只调用刷新的实验确认它没有业务副作用。

专注学习助手第5课运行状态布局预览

图来自本课最终工程执行积木后的状态,为 HTML 近似预览;不是手机截图。

核心积木与数据流

下面是本课完成工程中的核心代码,包含所需全局变量和过程。可在块图中追踪数值,再回到工程对照完整事件;合并到已有工程时,同名事件合并处理。

global 剩余 = 0
global 状态 = "待开始"
global 任务 = ""
global 完成数 = 0
global 阶段 = "专注"



procedure 刷新() {
标签_剩余.Text = join(floor(剩余 / 60), " 分 ", 剩余 % 60, " 秒")
标签_状态.Text = join(状态, " · ", 阶段, " · ", 任务)
标签_记录.Text = join("已完成 ", 完成数, " 项")
}

中途检查与排错

本课以下控制与数据流已执行最终归档中的真实积木检查。请在伴侣或安装的 APK 中按相同场景操作,记录实际结果;自动检查通过不代表手机已实测。

  1. 拒绝空任务。
  2. 非数字、非正数、上限、小数拒绝。
  3. 2分钟等于120秒。
  4. 延迟回调按实际时间计算。
  5. 运行中重复开始不重置。
  6. 暂停期间不扣时。
  7. 到期与重复计时回调。

排查时先确定出错的是输入、状态、数据读取还是显示;用标签暂时显示关键值,每次只改变一个条件。

本阶段尚未加入数据保存,关闭应用会丢失任务;计时器用于前台刷新,不是系统后台闹钟。

两个理解题与独立改造

  1. 只调用刷新过程,剩余时间会减少吗?
  2. 过程参数与全局变量有什么区别?

独立改造: 把“格式化秒数”提取为有返回值的过程,供其他标签使用。

先完成自己的工程,再对照答案。检查成功路径,也检查空数据、重复操作和取消;写出你改动的规则。

查看预测与练习参考答案

预测: 不会。刷新读取已有剩余;减少剩余的逻辑在 Timer 中。

追踪: 参数是这次调用的数据,全局是共享状态;可复用的格式化过程应接受参数。

改造思路: 过程参数是秒数,返回格式化文本;不要让它依赖全局剩余,这样可以单独测试 0、59、60、120。

完成与下一步

保存自己的工程并导出 .aia;给文件命名以区分本课作业和参考源码。请用自己的话解释本课知识,并展示一次失败输入的处理。

上一课 · 下一课:把任务与记录保存下来

文档反馈