本系列第 7/8 课,建议 45–60 分钟(估算)。先完成上一课。
这课解决什么
虚拟页面是同一屏幕里不同排列的可见状态,业务变量仍是一份。导航切换只切 Visible,不调用开始或初始化。设置面板修改的是下一次任务参数,当前运行参数已经保存。
先预测,再运行
切到统计,再切回专注,会重新开始计时吗?
先记下自己的答案,运行起始工程与完成工程比较;答案见文末。
开始实战
以上一课完成工程为起点,先导入并运行,再另存为本课作业。
完成工程可以查看答案;独立作业请保留自己的修改。
新增或调整的组件
| 实例名 | 组件 | 本课配置 |
|---|---|---|
标签_标题 |
标签 | Width=Fill parent;FontSize=24;TextColor=#183153;Text=专注学习 · 第 7课 |
垂直布局_专注 |
垂直布局 | Width=Fill parent;Visible=True |
垂直布局_统计 |
垂直布局 | Width=Fill parent;Visible=False |
标签_统计 |
标签 | Width=Fill parent;FontSize=16;TextColor=#183153;Text=尚无完成记录 |
垂直布局_设置 |
垂直布局 | Width=Fill parent;Visible=False |
标签_设置状态 |
标签 | Width=Fill parent;FontSize=16;TextColor=#183153;Text=填写时长后保存 |
标签_说明 |
标签 | Width=Fill parent;FontSize=16;TextColor=#183153;Text=时长 1–180 分钟。运行任务在重启后恢复为暂停,恢复时不会计入离开应用期间。 |
按钮_保存设置 |
按钮 | Width=Fill parent;BackgroundColor=#2563EB;TextColor=#FFFFFF;FontSize=16;Text=保存设置 |
微数据库1 |
微数据库 | Namespace=FocusA07 |
导航条1 |
导航条 | ItemCount=3;Position=bottom |
逐步搭建
- 把任务和控制按钮放在专注面板,记录摘要放在统计面板,时长输入与保存放在设置面板。
- 加入导航条,三项文字为专注、统计、设置;初始化设置导航项目。
- ItemSelected 根据 index 设置三个面板 Visible,统计读取现有记录。
- 运行任务期间切三页;截止不变。保存有效时长后开始下一项,确认新参数生效。

图来自本课最终工程执行积木后的状态,为 HTML 近似预览;不是手机截图。
核心积木与数据流
下面是本课完成工程中的核心代码,包含所需全局变量和过程。可在块图中追踪数值,再回到工程对照完整事件;合并到已有工程时,同名事件合并处理。
global 完成数 = 0
global 记录 = []
when 导航条1.ItemSelected(index) {
垂直布局_专注.Visible = index = 1
垂直布局_统计.Visible = index = 2
垂直布局_设置.Visible = index = 3
标签_统计.Text = join("累计完成:", 完成数, "\n", join(记录))
}
中途检查与排错
本课以下控制与数据流已执行最终归档中的真实积木检查。请在伴侣或安装的 APK 中按相同场景操作,记录实际结果;自动检查通过不代表手机已实测。
- 拒绝空任务。
- 非数字、非正数、上限、小数拒绝。
- 2分钟等于120秒。
- 延迟回调按实际时间计算。
- 运行中重复开始不重置。
- 重启读取设置、记录和暂停快照。
- 暂停期间不扣时。
- 切页不重启任务。
- 完成记录持久化。
- 到期与重复计时回调。
排查时先确定出错的是输入、状态、数据读取还是显示;用标签暂时显示关键值,每次只改变一个条件。
计时器用于前台刷新;重启恢复暂停快照,可能回退约五秒。系统时间被修改会影响截止计算,不能用本项目承诺可靠的系统闹钟。
两个理解题与独立改造
- 切到统计,再切回专注,会重新开始计时吗?
- 切页后清空全局变量为什么可能破坏任务?
独立改造: 在统计页显示每条记录,而不是整个列表的文本表示。
先完成自己的工程,再对照答案。检查成功路径,也检查空数据、重复操作和取消;写出你改动的规则。
查看预测与练习参考答案
预测: 不会。导航事件只切换面板,计时器和截止没有重新初始化。
追踪: 虚拟页面共享业务状态,切页只应更新可见性,不能重置截止和剩余。
改造思路: 遍历记录,用 join 累加换行;初始化空文本,空列表单独显示暂无记录。不要给每次刷新重复追加旧记录。
完成与下一步
保存自己的工程并导出 .aia;给文件命名以区分本课作业和参考源码。请用自己的话解释本课知识,并展示一次失败输入的处理。
扫码添加客服咨询