HarmonyOS Next开发学习手册——Background Tasks Kit(后台任务开发服务)长时任务

概述

功能介绍

应用退至后台后,在后台需要长时间运行用户可感知的任务,如播放音乐、导航等。为防止应用进程被挂起,导致对应功能异常,可以申请长时任务,使应用在后台长时间运行。

申请长时任务后,系统会做相应的校验,确保应用在执行相应的长时任务。同时,系统有与长时任务相关联的通知栏消息,用户删除通知栏消息时,系统会自动停止长时任务。

使用场景

下表给出了当前长时任务支持的类型,包含数据传输、音视频播放、录音、定位导航、蓝牙相关、多设备互联、WLAN相关、音视频通话和计算任务。可以参考下表中的场景举例,选择合适的长时任务类型。

表1 长时任务类型

参数名 描述 配置项 场景举例
DATA_TRANSFER 数据传输 dataTransfer 后台下载大文件,如浏览器后台下载等。
AUDIO_PLAYBACK 音视频播放 audioPlayback 音乐类应用在后台播放音乐。
AUDIO_RECORDING 录音 audioRecording 录音机在后台录音。
LOCATION 定位导航 location 导航类应用后台导航。
BLUETOOTH_INTERACTION 蓝牙相关 bluetoothInteraction 通过蓝牙传输分享的文件。
MULTI_DEVICE_CONNECTION 多设备互联 multiDeviceConnection 分布式业务连接。
TASK_KEEPING 计算任务(仅对2IN1开放) taskKeeping 杀毒软件。
  • 使用了 网络管理 服务的应用,才能通过申请DATA_TRANSFER长时任务实现后台上传下载,不被挂起。如果使用 上传下载代理接口 托管给系统执行,无论是否申请DATA_TRANSFER,应用都会被挂起。
  • 使用了 媒体会话 服务的音视频应用,才能通过申请AUDIO_PLAYBACK长时任务实现后台播放。

约束与限制

  • 申请限制:Stage模型中,长时任务仅支持UIAbility申请;FA模型中,长时任务仅支持ServiceAbility申请。

  • 数量限制:一个UIAbility(FA模型则为ServiceAbility)同一时刻仅支持申请一个长时任务,即在一个长时任务结束后才可能继续申请。如果一个应用同时需要申请多个长时任务,需要创建多个UIAbility;一个应用的一个UIAbility申请长时任务后,整个应用下的所有进程均不会被挂起。

  • 运行限制:在手机产品上,系统会进行长时任务校验。

场景1:若应用申请了长时任务,但未真正执行申请类型的长时任务或申请类型的任务已结束,系统会对应用进行管控。例如系统检测到应用申请了AUDIO_PLAYBACK(音视频播放),但实际未播放音乐,长时任务会被取消。

场景2:若应用没有申请对应的长时任务类型,但执行了相关类型的长时任务,系统会对应用进行管控。例如系统检测到应用只申请了AUDIO_PLAYBACK(音视频播放),但实际上除了播放音乐(对应AUDIO_PLAYBACK类型),还在进行录音(对应AUDIO_RECORDING类型),系统会对应用进行管控。

场景3:若运行长时任务的进程后台负载持续高于所申请类型的典型负载,系统会对应用进行管控。

说明

应用按需求申请长时任务,当应用无需在后台运行(任务结束)时,要及时主动取消长时任务,否则系统会强行取消。例如用户点击音乐暂停播放时,应用需及时取消对应的长时任务;用户再次点击音乐播放时,需重新申请长时任务。

播放音频的应用在后台停止长时任务的同时,需要暂停或停止音频流,否则应用会被系统强制终止。

接口说明

表2 主要接口

以下是长时任务开发使用的相关接口,下表均以Promise形式为例,更多接口及使用方式请见 后台任务管理 。

接口名 描述
startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent ): Promise 申请长时任务
stopBackgroundRunning(context: Context): Promise 取消长时任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值