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

概述

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

约束与限制

  • 申请时机:应用需要在前台或退至后台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. ......
相关推荐
lqj_本人4 小时前
鸿蒙Cordova插件架构与OnsenUI组件适配机制深度解析
华为·架构·harmonyos
猫林老师7 小时前
Flutter for HarmonyOS开发指南(六):测试、调试与质量保障体系
flutter·华为·harmonyos
小Mei数码说12 小时前
华为WATCH 5:连接心与心,让生活更美好
华为·智能手表
爱笑的眼睛1112 小时前
HarmonyOS 应用开发中的内存泄漏检测与修复:深入探索与实践指南
华为·harmonyos
kangyouwei13 小时前
鸿蒙开发:19-本地开发配置bash环境执行hvigorw命令
前端·harmonyos
爱笑的眼睛1113 小时前
HarmonyOS 应用开发:系统权限申请与管理深度解析
华为·harmonyos
DIY机器人工房15 小时前
科普:华为星闪是什么?华为星闪(英文名 NearLink)是国际星闪无线短距通信联盟发布的新型无线短距通信标准技术。
stm32·嵌入式硬件·华为·嵌入式·diy机器人工房·嵌入式面试题
天黑请闭眼15 小时前
华为对象存储:nginx代理临时访问地址后访问报错:Authentication Failed
nginx·华为
熊猫钓鱼>_>1 天前
鸿蒙ArkUI基础组件开发详解
华为·harmonyos
猫林老师1 天前
Flutter for HarmonyOS开发指南(八):国际化与本地化深度实践
flutter·华为·harmonyos