Harmony OS 后台任务-短时任务

一、短时任务

传送门

1.为什么使用短时任务

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

2.短时任务限制

  • 应用需要在前台或onBackground回调内,申请短时任务,否则会申请失败。
  • 一个应用同一时刻最多申请3个短时任务。
  • 同一个应用由一定的短时任务配额
    • 每天的总时长是 10min
    • 单次配额最大为3分钟
    • 低电量时单次配额默认为1分钟
    • 配额消耗完后不允许再申请短时任务
  • 配额计算
    • 如果你中间切换回来前台, 那么不计算时间,再次退出到后台的时候, 再次累计时间
    • 同一个应用下的同一个时间段的短时任务,不重复计时
  • 主要用到的Api
    • requestSuspendDelay( 申请短时任务 )
    • getRemainingDelayTime( 获取短时任务配额剩余时间 )
    • cancelSuspendDelay( 取消短时任务 )

3.申请短时任务

async shortTermTasks() {
  try {
    console.log(' => 点击了事件')
    // backgroundTaskManager.requestSuspendDelay('短时任务描述', 回调函数)
    // 回调函数不是申请完毕短时任务就执行的, 是本次短时任务即将到时得时候, 执行的
    // 一般在这个回调函数内去取消当前短时任务
    // 返回值是一个短时任务信息对象( 包含当前短时任务 id, 这个 id 是用于取消短时任务使用的 )
    const delayInfo = backgroundTaskManager.requestSuspendDelay('测试短时任务', () => {
      console.log(' => 短时任务马上就要到期了')
      console.log(' delayInfo => ', JSON.stringify(delayInfo))
      backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId)
    })
    // 做文件下载任务---耗时长
    const res = await downloadFile()

    // 下载异常终止短时任务
    if(!res){
       backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId)
      return;
    }

    console.log(' => 耗时计算任务完成')
    // 任务执行完毕终止短时任务
    backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId)
  } catch (e) {
    // 捕捉异常终止短时任务
    backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId)
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值