HarmonyOS 鸿蒙Next 申请长时任务
HarmonyOS 鸿蒙Next 申请长时任务
按照官方的demo申请长时任务,后台播放视频,但是没有生效。
async startContinuousTask(): Promise<void> {
let wantAgentInfo: wantAgent.WantAgentInfo = {
wants: [{ bundleName: “com.samples.mediaprovider”, abilityName: “com.samples.mediaprovider.EntryAbility” }],
operationType: wantAgent.OperationType.START_ABILITY,
requestCode: 0,
wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
};
let want = await wantAgent.getWantAgent(wantAgentInfo);
await backgroundTaskManager.startBackgroundRunning(GlobalContext.getContext()
.getObject(‘context’) as (common.UIAbilityContext), backgroundTaskManager.BackgroundMode.AUDIO_PLAYBACK, want);
}
2 回复
所有需要进行后台播放的音视频应用,都需要同时接入AVSession和后台任务管理,未接入的应用在退到后台时,将会被强制暂停音频播放。 参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/audio-playback-overview-V5
在HarmonyOS鸿蒙Next中,申请长时任务需要遵循一定的规则和步骤。以下是对申请长时任务的详细解答:
一、长时任务概述
长时任务适用于应用退至后台后,需要长时间运行的用户可感知任务,如播放音乐、导航等。为防止应用进程被挂起,导致功能异常,开发者可以申请长时任务。
二、申请限制
- 模型限制:Stage模型中,长时任务仅支持UIAbility申请;FA模型中,长时任务仅支持ServiceAbility申请。
- 数量限制:一个UIAbility(FA模型则为ServiceAbility)同一时刻仅支持申请一个长时任务。
三、申请步骤
- 声明权限:申请ohos.permission.KEEP_BACKGROUND_RUNNING权限。
- 声明后台模式类型:在module.json5配置文件中,为需要使用长时任务的UIAbility声明相应的长时任务类型。
- 创建ContinuousTaskExtensionAbility:实现onContinuousTaskStart和onContinuousTaskStop回调函数,处理任务开始和结束的逻辑。
- 启动长时任务:通过backgroundTaskManager.startContinuousTask接口启动长时任务。
四、注意事项
长时任务需经过系统校验,确保应用执行的任务与申请类型一致。系统会对未执行申请任务类型、执行非申请任务类型或后台负载过高的应用进行管控。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。