【鸿蒙开发】后台任务

devtools/2024/9/24 13:12:24/

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%')}
}


http://www.ppmy.cn/devtools/11351.html

相关文章

4个步骤:如何使用 SwiftSoup 和爬虫代理获取网站视频

摘要/导言 在本文中,我们将探讨如何使用 SwiftSoup 库和爬虫代理技术来获取网站上的视频资源。我们将介绍一种简洁、可靠的方法,以及实现这一目标所需的步骤。 背景/引言 随着互联网的迅速发展,爬虫技术在今天的数字世界中扮演着越来越重要…

全量知识系统 详细程序设计 之“编程理念”(QA SmartChat)

Q1. 今天聊聊 全量知识系统 (“全知系统”)详细程序设计 之“编程理念” 全知系统是一种拥有无限知识和能力的智能系统,它能够理解和应对各种复杂问题,并给出最优解决方案。在设计全知系统的程序时,需要遵循以下编程理…

[蓝桥杯 2018 省 A] 航班时间

题目链接:航班时间 显然:去程时间飞行时间时差,回程时间飞行时间-时差 列方程组可知:飞行时间(去程时间回程时间)/2 本道题目还有一个难点在于如何读入和输出:可以采用scanf(&…

踏上R语言之旅:解锁数据世界的神秘密码(一)

R语言学习 文章目录 R语言学习数据矩阵与R语言表示1.创建一个向量(随机变量、一维数组)2.创建一个矩阵(二维数组)3.矩阵转置4.矩阵相加减5.矩阵相乘6.矩阵对角元素相关运算7.矩阵求逆8.矩阵的特征值与特征向量9.矩阵的Choleskey分…

一维递归:递去

示例&#xff1a; /*** brief how about recursive-forward-1? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h>…

C++-DAY1

思维导图 有以下定义&#xff0c;说明哪些量可以改变哪些不可以改变&#xff1f; const char *p; const (char *) p; char *const p; const char* const p; char const *p; (char *) const p; char const* const p; const char *p&#xff1a;指针 p 所指向的内容不可改…

使用Apache Cordova将H5游戏打包成apk

要将HTML5游戏转换成apk格式以供Android手机用户使用&#xff0c;有一种常用的方法是使用跨平台开发工具Apache Cordova。Cordova是一个开源框架&#xff0c;允许将网页应用程序打包为原生移动应用程序。下面是一个简单的步骤指南&#xff1a; 1. 准备工作&#xff1a;在您的电…

基于区块链技术的域名系统设计与实现

基于区块链技术的域名系统设计与实现 “Design and Implementation of Domain Name System Based on Blockchain Technology” 完整下载链接:基于区块链技术的域名系统设计与实现 文章目录 基于区块链技术的域名系统设计与实现摘要第一章 引言1.1 研究背景1.2 研究目的1.3 研…