1. 功能介绍
设备返回主界面、锁屏、应用切换等操作会使应用退至后台。
2. 后台任务类型
OpenHarmony标准系统支持规范内受约束的后台任务,包括短时任务、长时任务、延迟任务、代理提醒和能效资源。
开发者可以根据如下功能介绍,选择合适的后台任务以满足应用退至后台后继续运行的需求。
- 短时任务:适用于实时性要求高、耗时不长的任务,例如状态保存。
- 长时任务:适用于长时间运行在后台、用户可感知的任务,例如后台播放音乐、导航、设备连接等,使用长时任务避免应用进程被挂起。
- 延迟任务:对于实时性要求不高、可延迟执行的任务,系统提供了延迟任务,即满足条件的应用退至后台后被放入执行队列,系统会根据内存、功耗等统一调度。
- 代理提醒:代理提醒是指应用退后台或进程终止后,系统会代理应用做相应的提醒。适用于定时提醒类业务,当前支持的提醒类型包括倒计时、日历和闹钟三类。
使用这些功能需要授权 ohos.permission.PUBLISH_AGENT_REMINDER 权限。
3. 代理提醒
3.1 功能介绍
应用退到后台或进程终止后,仍然有一些提醒用户的定时类任务,例如购物类应用抢购提醒等,为满足此类功能场景,系统提供了代理提醒(reminderAgentManager)的能力。当应用退至后台或进程终止后,系统会代理应用做相应的提醒。当前支持的提醒类型包括:倒计时、日历和闹钟。
-
倒计时类:基于倒计时的提醒功能。
-
日历类:基于日历的提醒功能。
-
闹钟类:基于时钟的提醒功能。
3.2 闹钟提醒
import reminderAgentManager from '@ohos.reminderAgentManager'
import promptAction from '@ohos.promptAction'@Entry
@Component
struct Index {@State reminderId: number = 0@State hour: number = 0@State minute: number = 0build() {Row() {Column({ space: 5 }) {Button("开启闹铃").onClick(async () => {const reminderReq: reminderAgentManager.ReminderRequestAlarm = {reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM, // 提醒类型为闹钟类型hour: this.hour,minute: this.minute,daysOfWeek: [], // 0-6 指明每周哪几天需要重复提醒 不写就是仅限今天ringDuration: 60, // 响铃的时长单位秒actionButton: [ // 设置弹出的提醒通知信息上显示的按钮类型和标题{title: "关闭",type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE},{title: "延迟",type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE}],wantAgent: { // 点击提醒通知后跳转的目标UIAbility信息pkgName: "com.example.myapplication",abilityName: "EntryAbility"},snoozeTimes: 2, // 指明延迟提醒次数timeInterval: 60 // 执行延迟提醒间隔(单位:秒)}this.reminderId = await reminderAgentManager.publishReminder(reminderReq)promptAction.showToast({ message: '添加闹铃成功' })})Button("关闭闹铃").onClick(() => {reminderAgentManager.cancelReminder(this.reminderId)promptAction.showToast({ message: '关闭闹铃成功' })})Text(`${this.hour}:${this.minute}`)TimePicker({selected: new Date()}).onChange((e) => {this.hour = e.hourthis.minute = e.minute})}.width('100%')}.height('100%')}
}