HarmonyOS Next中长时任务报错有遇到的大佬吗?

按照官方文档开启长时任务:

startContinuousTask() { 
  let wantAgentInfo: wantAgent.WantAgentInfo = { 
    // 点击通知后,将要执行的动作列表 
    // 添加需要被拉起应用的bundleName和abilityName 
    wants: [ 
      { 
        bundleName: "com.xxxx.xxxx.news", 
        abilityName: "com.xxxx.xxxx.news.EntryAbility" 
      } 
    ], 
    // 指定点击通知栏消息后的动作是拉起ability 
    actionType: wantAgent.OperationType.START_ABILITY, 
    // 使用者自定义的一个私有值 
    requestCode: 0, 
    // 点击通知后,动作执行属性 
    wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 
  }; 
 
  // 通过wantAgent模块下getWantAgent方法获取WantAgent对象 
  wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => { 
    backgroundTaskManager.startBackgroundRunning(getContext(), 
      backgroundTaskManager.BackgroundMode.AUDIO_RECORDING, wantAgentObj).then(() => { 
      console.info(`Succeeded in operationing startBackgroundRunning.`); 
    }).catch((err: BusinessError) => { 
      console.error(`Failed to operation startBackgroundRunning. Code is ${err.code}, message is ${err.message}`); 
    }); 
  }); 
} 
 
 
stopContinuousTask() { 
  backgroundTaskManager.stopBackgroundRunning(getContext()).then(() => { 
    console.info(`Succeeded in operationing stopBackgroundRunning.`); 
  }).catch((err: BusinessError) => { 
    console.error(`Failed to operation stopBackgroundRunning. Code is ${err.code}, message is ${err.message}`); 
  }); 
}

调用stopContinuousTask方法报错:
Failed to operation stopBackgroundRunning. Code is 9800005, message is BussinessError 9800005: Continuous Task verification failed. The application has not applied for a continuous task.

阅读 846
avatarAI BotBETA

在HarmonyOS中,当你遇到关于长时任务(Continuous Task)的错误,特别是像 BussinessError 9800005: Continuous Task verification failed. The application has not applied for a continuous task. 这样的错误时,这通常意味着你的应用没有正确申请或注册为可以执行长时任务的应用。

解决步骤

  1. 检查权限配置
    确保你的应用已经在config.json文件中正确配置了执行长时任务所需的权限。对于音频录制等背景模式,你需要在config.jsonabilitiesapp节点下添加相应的权限声明。例如,对于音频录制,你可能需要添加:

    "reqPermissions": [
      {
        "name": "ohos.permission.RECORD_AUDIO"
      }
    ],
    "reqFeatures": [
      "ohos.hardware.audio.record"
    ]

同时,确保你的应用已经声明了可以执行长时任务的权限或特性。

  1. 注册长时任务
    在HarmonyOS中,执行长时任务前,你需要在应用管理或系统设置中注册你的应用为可以执行长时任务的应用。这通常涉及到在开发者选项或应用管理中手动开启或配置。然而,对于大多数商业应用,这通常是通过应用市场的审核流程自动完成的。
  2. 检查API调用
    你的代码示例中使用了backgroundTaskManager.startBackgroundRunningbackgroundTaskManager.stopBackgroundRunning,这些API的调用看起来是正确的。但是,确保在调用stopBackgroundRunning之前,确实已经成功调用了startBackgroundRunning并且长时任务正在运行。
  3. 查看文档和社区
    查阅最新的HarmonyOS官方文档,看看是否有关于长时任务的新要求或变更。同时,访问HarmonyOS开发者社区或论坛,看看是否有其他开发者遇到并解决了类似的问题。
  4. 调试和日志
    增加更多的日志输出,以便更详细地了解startBackgroundRunningstopBackgroundRunning的调用过程。检查是否有任何前置条件未满足或任何异常被抛出。
  5. 联系技术支持
    如果以上步骤都不能解决问题,考虑联系HarmonyOS的技术支持团队,提供详细的错误信息和你的应用配置,以便他们帮助你诊断问题。

注意事项

  • 确保你的应用版本与HarmonyOS的版本兼容。
  • 考虑到不同设备可能存在的差异,确保在多种设备上测试你的应用。
  • 遵循HarmonyOS的最佳实践和指南,以确保你的应用能够稳定、高效地运行。
1 个回答

长时任务有约束和限制,其中运行限制里面,如果应用申请了长时任务,但是未真正执行申请类型的长时任务或申请类型的任务已结束,系统会对应用进行管控。
简单的说,申请完长时任务,系统会在5秒之内检测是都执行申请类型的长时任务,没有,就直接结束任务了,那再触发stopContinuousTask就会报这个错。
约束限制可参见指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...约束与限制

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进