鸿蒙原生应用/元服务开发-短时任务

概述

应用退至后台一小段时间后,应用进程会被挂起,无法执行对应的任务。如果应用在后台仍需要执行耗时不长的任务,如状态保存等,可以通过本文申请短时任务,扩展应用在后台的运行时间。

约束与限制

  • 申请时机:应用需要在前台或退至后台5秒内,申请短时任务,否则会申请失败。
  • 数量限制:一个应用同一时刻最多申请3个短时任务。以图1为例,①②③时间段内的任意时刻应用申请2个短时任务,④时间段内的任意时刻应用申请1个短时任务。
  • 配额机制:一个应用会有一定的短时任务配额(根据系统状态和用户习惯调整),单日(24小时内)配额默认为10分钟,单次配额最大为3分钟,低电量时默认为1分钟,配额消耗完后不允许再申请短时任务。同时,系统提供获取对应短时任务剩余时间的查询接口,用以查询本次短时任务剩余时间,以确认是否继续运行其他业务。
  • 配额计算:仅当应用在后台时,对应用下的短时任务计时;同一个应用下的同一个时间段的短时任务,不重复计时。

以下图为例:应用有两个短时任务A和B,在前台时申请短时任务A,应用退至后台后开始计时为①,应用进入前台后②不计时,再次进入后台后③开始计时,短时任务A结束后,由于阶段④仍然有短时任务B,所以该阶段继续计时。因此,在这个过程中,该应用短时任务总耗时为①+③+④。

图1 短时任务配额计算原理图

·超时:短时任务即将超时时,系统会回调应用,应用需要取消短时任务。如果超时不取消,系统会终止对应的应用进程。

接口说明:

代码开发:

1.导入模块

复制代码
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';

2.申请短时任务并实现回调

复制代码
et id; // 申请短时任务ID

let delayTime; // 本次申请短时任务的剩余时间

// 申请短时任务

function requestSuspendDelay() {

let myReason = 'test requestSuspendDelay'; // 申请原因

let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, ()=> {

// 回调函数。应用申请的短时任务即将超时,通过此函数回调应用,行一些清理和标注工作,并取消短时任务

console.info('Succeeded in requesting suspend delay.');

backgroundTaskManager.cancelSuspendDelay(id);

})

id = delayInfo.requestId;

delayTime = delayInfo.actualDelayTime;

}

3.获取短时任务剩余时间。查询本次短时任务的剩余时间,用以判断是否继续运行其他业务,例如应用有两个小任务,在执行完第一个小任务后,可以判断本次短时任务是否还有剩余时间来决定是否执行第二个小任务。

复制代码
async function getRemainingDelayTime() {

  backgroundTaskManager.getRemainingDelayTime(id).then(res => {

    delayTime = res;

    console.info('Succeeded in getting remaining delay time.');

  }).catch(err => {

    console.error(`Failed to get remaining delay time. Code: ${err.code}, message: ${err.message}`);

  })

}

4.取消短时任务

复制代码
function cancelSuspendDelay() {

  backgroundTaskManager.cancelSuspendDelay(id);

}

为了能让大家更好的学习鸿蒙 (Harmony OS) 开发技术,这边特意整理了《鸿蒙 (Harmony OS)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (Harmony OS)开发学习手册》

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. 应用开发导读(Java)

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ......

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ......

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ......
相关推荐
OH_TPC10 小时前
HarmonyOS APP开发---“滤镜大师“图像处理App,需要用到这个库
java·图像处理·华为·harmonyos·鸿蒙
2501_9197490314 小时前
华为鸿蒙管理密码APP—小羊密码
华为·harmonyos·鸿蒙
ITUnicorn17 小时前
【HarmonyOS】时间管理类APP:做成“自适应“
harmonyos
笔触狂放17 小时前
第2章 ArkTS(上)
华为·harmonyos·鸿蒙
新元代码18 小时前
探秘鸿蒙南向开发:Hi3861 架构、编译与实战全解析
华为·架构·harmonyos
笔触狂放18 小时前
第1章 初识鸿蒙
华为·harmonyos
xiaoxiangsiyan18 小时前
企业园区局域网交换技术完整版手册主打华为设备
运维·网络·学习·华为·路由·交换机·企业网
小雨青年19 小时前
【HarmonyOS 7 沉浸光感深度实战】 06 复杂背景下的自动反色与可读性处理
华为·harmonyos
水深火乐20 小时前
HmarkX(码笺)的本地数据库模块重构实战
harmonyos
大锅盖120 小时前
Map 搜索没有返回可信候选时,派单页面该怎么继续工作
华为·harmonyos