定时任务使用指导

← 返回定时任务组件参考 · 全部使用指导

定时任务使用指导

不可见组件:到指定时刻触发到点时(编号,是否补发)(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 源码与操作指导

下载 .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个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。

推荐测试顺序

  1. 不勾选准点和打开界面,点击30秒一次提醒,保持应用前台等待。到点区应显示编号101、真实接收时间和补发标志。
  2. 将每天时分设为下一分钟,读取计划。相同编号重复排定是替换;测试完取消102。星期编号1为周一、7为周日。
  3. 根据系统提示允许通知,申请所需权限,再勾选相关选项并重新排定。准点权限申请没有统一完成事件,返回后点击读取权限。
  4. 鸿蒙退后台可能冻结前台定时器;系统提醒与本应用事件是两条路径。返回应用后已到期任务可能补发。间隔任务关闭应用期间仅保证已排定的下一次系统提醒,回来后继续排期,不承诺后台每15分钟持续运行。
  5. 测完取消101—104;“全部取消”会影响当前屏幕的全部排期,伴侣多项目测试时谨慎使用。编译独立安装更适合测试系统入口;无设备环境未验证系统通知及自动打开界面。
文档反馈