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

概述

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

约束与限制

  • 申请时机:应用需要在前台或退至后台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. ......
相关推荐
李二。16 分钟前
鸿蒙原生密码保险箱 PasswordVault 应用开发实战
华为·harmonyos
小雨下雨的雨25 分钟前
基于 Electron 运行时的鸿蒙PC桌面应用-安全可靠的随机密码生成工具
前端·javascript·华为·electron·前端框架·鸿蒙
科技与数码32 分钟前
鸿蒙AI防诈能力:场景化防诈+换脸检测+亲情防诈
人工智能·华为·harmonyos
独特的螺狮粉38 分钟前
金属硬度与熔点对照表APP - 通过鸿蒙PC Electron框架完整技术实现指南
前端·javascript·electron·前端框架·开源·鸿蒙
小菜鸟学开发1 小时前
OpenHarmony v6.1-release 编译指南
harmonyos
李二。1 小时前
鸿蒙 HarmonyOS 待办清单应用开发实战 —— 基于 ArkTS + SQLite 的完整教程
华为·sqlite·harmonyos
Pocker_Spades_A1 小时前
[鸿蒙PC命令行移植适配]移植rust三方库peep到鸿蒙PC的完整实践
华为·rust·harmonyos
EterNity_TiMe_1 小时前
[鸿蒙PC命令行移植适配]移植rust三方库grex到鸿蒙PC的完整实践
华为·rust·harmonyos
EterNity_TiMe_1 小时前
[鸿蒙PC命令行移植适配]移植rust三方库lsd到鸿蒙PC的完整实践
华为·rust·harmonyos
IT大白鼠2 小时前
BGP协议概述:定义、机制与应用
网络·网络协议·华为