定时任务使用指导
不可见组件:到指定时刻触发到点时(编号,是否补发)(Fired)事件——某个时刻一次、每天几点、每周几的几点、每隔几分钟。
设置了通知标题(NotificationTitle)或通知文字(NotificationText)时,App 不在前台也会到点弹一条通知。
积木只能在 App 运行时执行,所以到点时分两种情况:
| 到点时 App 的状态 | 发生什么 |
|---|---|
| 开着(在前台) | 立即触发「到点」,是否补发为假 |
| 在后台或已关掉 | 系统到点弹通知(设置了通知文字才弹);用户点通知或下次打开这个屏幕时补发「到点」,是否补发为真 |
排定的任务会保存下来:App 被关掉、手机重启后照样到点。每个任务用一个编号(整数)区分,编号在每个屏幕内独立;
同一编号再排就替换原来的任务,所以在 Screen1.Initialize 里排任务不会越排越多。
勾选到点打开屏幕(OpenScreen)可以做闹钟:到点亮屏、直接打开这个屏幕并显示在锁屏上方。
做不到的事:App 关掉后在后台跑积木(例如定时上传数据)。
本组件合并了第三方拓展 UrsAI2Alarm 的常用功能。
快速上手:每天 8 点打卡提醒
拖一个定时任务到屏幕,通知标题填「打卡」、通知文字填「该打卡了」:
各案例独立使用;组合到同一屏幕时,将同名事件的处理合并到一个事件积木中。
when Screen1.Initialize() {
定时任务1.ScheduleDaily(1, 8, 0)
}
when 定时任务1.Fired(编号, 是否补发) {
if 是否补发 {
标签1.Text = "你错过了今天 8 点的打卡提醒"
} else {
对话框1.ShowAlert("该打卡了")
}
}
工作日提醒与取消
星期列表用 1(周一)到 7(周日)。下面每个工作日 21:30 提醒写日报,开关控制开启或取消:
when 开关1.Changed() {
if 开关1.On {
定时任务1.ScheduleWeekly(2, [1, 2, 3, 4, 5], 21, 30)
} else {
定时任务1.Cancel(2)
}
}
某个时刻提醒一次:用计时器的「由元件建时间点」生成时刻,例如 2026 年 10 月 1 日 9 点:
when 按钮1.Click() {
定时任务1.ScheduleOnce(3, 计时器1.MakeInstantFromParts(2026, 10, 1, 9, 0, 0))
}
闹钟:到点打开界面
到点打开屏幕勾选为真,通知文字填「该吃药了」。安卓 10 起要先让用户允许后台打开界面(小米手机会打开应用权限页, 请用户同时打开「后台弹出界面」和「显示悬浮窗」):
when 按钮_设闹钟.Click() {
if 定时任务1.HasLaunchPermission() {
定时任务1.ScheduleDaily(1, 7, 30)
对话框1.ShowAlert("已设好每天 7:30 的闹钟")
} else {
定时任务1.RequestLaunchPermission()
}
}
when 定时任务1.LaunchPermissionResult(已授权) {
if 已授权 {
定时任务1.ScheduleDaily(1, 7, 30)
} else {
对话框1.ShowAlert("没有授权时只在锁屏或熄屏状态下打开界面")
}
}
when 定时任务1.Fired(编号, 是否补发) {
if not(是否补发) {
音效1.Play()
标签1.Text = "该吃药了"
}
}
到点时屏幕被拉起、点亮并盖在锁屏上方,「到点」事件里的积木负责响铃和显示内容;用户离开这个界面后恢复正常锁屏。
搭建与测试
在设计器拖入本组件和案例涉及的按钮、标签、布局等组件,按案例中的名称重命名。先运行最小案例,确认事件返回,再增加业务逻辑。示例中的素材先上传到项目,服务器地址、令牌、文件路径换成自己的值。
可见组件需要有非零宽高;不可见工具组件必须由属性或方法启动。设计器展示样式不等于运行时已加载数据或绑定目标。联机测试应使用包含本组件的 AI 伴侣;涉及系统入口或权限的行为还要编译安装后验证。
属性、方法与事件速查
完整参数类型、默认值和平台说明见组件参考。下表按调用入口列出用途;有完成事件的方法在事件中读取结果。
| 入口 | 用途 |
|---|---|
准点(Exact) |
为假(默认)时允许系统推迟几分钟以省电,不需要权限;为真时准点触发,安卓 12 起要用户在设置里允许「闹钟和提醒」,没允许时自动按普通精度。 |
通知文字(NotificationText) |
到点时 App 不在前台要弹的通知文字。在排定任务时记下。 |
通知标题(NotificationTitle) |
到点时 App 不在前台要弹的通知标题。标题和文字都留空就不弹通知。在排定任务时记下,之后改这个属性不影响已排定的任务。 |
到点打开屏幕(OpenScreen) |
为真时到点自动打开发任务的屏幕(App 关着也会启动),亮屏并显示在锁屏上方,适合闹钟、吃药提醒。安卓 10 起需要先用「申请打开界面权限」取得授权,没有授权时只在锁屏或熄屏时打开(需要设置通知文字)。在排定任务时记下。 |
取消(编号)(Cancel) |
取消指定编号的任务(本屏幕的),并收起它弹出的通知。 |
全部取消(CancelAll) |
取消本屏幕排定的全部任务。 |
能否准点(HasExactAlarmPermission) |
能否准点触发:安卓 12 以下总是真;12 起要用户在设置里允许「闹钟和提醒」。 |
能否打开界面(HasLaunchPermission) |
能否在后台直接打开界面(「到点打开屏幕」要用):安卓 10 以下总是真;10 起要允许「显示在其他应用的上层」。小米手机另需「后台弹出界面」,这一项查不到,只能引导用户去设置。 |
下次到点时刻(编号)(NextTime) |
指定编号任务下一次到点的时刻(毫秒数,可用「计时器」的「由毫秒数创建时间点」转换);没有这个任务时返回 0。 |
申请准点权限(RequestExactAlarmPermission) |
打开系统设置的「闹钟和提醒」页,让用户允许准点触发(安卓 12 以下直接返回)。 |
申请打开界面权限(RequestLaunchPermission) |
打开系统设置让用户允许后台打开界面(小米打开应用权限页,含「后台弹出界面」),用户回到 App 后触发「打开界面权限结果」。 |
每天(编号,时,分)(ScheduleDaily) |
每天几点几分触发(24 小时制)。 |
定时一次(编号,时刻)(ScheduleOnce) |
在指定时刻触发一次(时刻用「计时器」的「创建时间点」等积木生成)。时刻已过去会报错。 |
每隔几分钟(编号,间隔分钟)(ScheduleRepeating) |
从现在起每隔几分钟触发一次,最短 15 分钟(更短按 15 分钟,系统不允许更频繁地唤醒)。App 在前台时要更频繁地做事请用「计时器」。 |
每周(编号,星期,时,分)(ScheduleWeekly) |
每周指定几天的几点几分触发。weekdays 是星期列表,1=周一 … 7=周日,例如工作日是 1 到 5 的列表。 |
已排定编号(ScheduledIds) |
本屏幕已排定(还没结束)的任务编号列表,从小到大。 |
到点时(编号,是否补发)(Fired) |
任务到点。id 是任务编号;missed 为真表示到点时 App 没在运行(或手机关机),这是点通知或重新打开 App 时补发的;「到点打开屏幕」准时拉起的算准时(为假)。 |
打开界面权限结果(已授权)(LaunchPermissionResult) |
调用「申请打开界面权限」、用户从设置页回到 App 后触发。 |
常见问题与验收
| 检查项 | 操作与预期 |
|---|---|
| 初始化 | 对照案例检查是否已经调用加载、注册、连接或显示方法;仅拖入组件不会替你执行这些步骤。 |
| 结果返回 | 将成功事件和失败事件都接到标签,记录事件参数;异步操作完成前不读取结果属性。 |
| 输入配置 | 检查素材名大小写、网址是否为直接资源地址、文件是否存在、编号和索引是否在范围内。 |
| 平台与权限 | 按组件参考中的平台说明测试;授权被拒绝时应有明确提示,不继续假定操作成功。 |
| 最小案例 | 先验证页面中的最小案例,再验证第二个场景;重复操作、取消、返回屏幕后结果应符合事件说明。 |
完整 .aia 源码与操作指导
设备检查提醒的一次、每天、每周和间隔排期,全部由明确按钮创建,首次打开仅读取已有计划。建议先保持前台测试30秒一次提醒,确认真实事件后再测试通知和后台恢复。
导入 ScheduledTaskAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。
| API / 功能 | 操作入口 | 预期结果 |
|---|---|---|
| Exact、OpenScreen、NotificationTitle、NotificationText | 应用配置,读取属性;设计器查看 | 实际属性读回;设置后排定新任务才应用新配置 |
| ScheduleOnce、Fired | 点30秒后提醒,保持前台等待 | 101真实到点事件与接收时间;重复点替换同编号,不累加 |
| ScheduleDaily | 时分设置为下一分钟,点击每天 | 102的下次时间显示;已过时刻排到明天 |
| ScheduleWeekly | 勾选六日或选择工作日,排期 | 103星期1周一到7周日,下次日期符合列表 |
| ScheduleRepeating | 输入15,点击间隔;再试1或非数字 | 104每15分钟;不足15被界面拒绝,没有假到点 |
| ScheduledIds、NextTime | 查询计划;取消后再查询 | 显示真实编号与下次毫秒/日期;不使用固定成功文本 |
| Cancel、CancelAll | 取消101;勾选确认后全部取消 | 编号消失;全部取消影响本屏所有排期 |
| HasExactAlarmPermission、RequestExactAlarmPermission | 查询、申请、返回后再查询 | 实际权限反馈;安卓由系统设置决定 |
| HasLaunchPermission、RequestLaunchPermission、LaunchPermissionResult | 查询、申请打开界面权限 | 实际返回事件结果;拒绝时不声称授权成功 |
| 重启/退后台补发 | 排定一次后退后台,过时再返回 | 鸿蒙可能补发missed=true,不宣称后台定时器持续执行 |
所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。
设备定时提醒
导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 设备检查提醒的一次、每天、每周和间隔排期,全部由明确按钮创建,首次打开仅读取已有计划。建议先保持前台测试30秒一次提醒,确认真实事件后再测试通知和后台恢复。 覆盖检查 26/26。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。
推荐测试顺序
- 不勾选准点和打开界面,点击30秒一次提醒,保持应用前台等待。到点区应显示编号101、真实接收时间和补发标志。
- 将每天时分设为下一分钟,读取计划。相同编号重复排定是替换;测试完取消102。星期编号1为周一、7为周日。
- 根据系统提示允许通知,申请所需权限,再勾选相关选项并重新排定。准点权限申请没有统一完成事件,返回后点击读取权限。
- 鸿蒙退后台可能冻结前台定时器;系统提醒与本应用事件是两条路径。返回应用后已到期任务可能补发。间隔任务关闭应用期间仅保证已排定的下一次系统提醒,回来后继续排期,不承诺后台每15分钟持续运行。
- 测完取消101—104;“全部取消”会影响当前屏幕的全部排期,伴侣多项目测试时谨慎使用。编译独立安装更适合测试系统入口;无设备环境未验证系统通知及自动打开界面。
扫码添加客服咨询