HarmonyOS 鸿蒙Next StartupTask.init taskPool异步线程waitOnMainThread为true时 返回Promise 无法结束掉任务

HarmonyOS 鸿蒙Next StartupTask.init taskPool异步线程waitOnMainThread为true时 返回Promise 无法结束掉任务

cke_1457.png

当前任务配置为  

runOnThread:taskPool 异步线程
waitOnMainThread true

init 方法中 使用 Promise 回调返回 或者 使用 await 执行 都会出现此种情况, 代码里的任务已经结束 但是 Appstartup 任务中无任何反应,直到 任务超时退出。

我不知道是我的写法有问题,我用 mainThread 确实没有问题。

但是使用 taskPool 且需要等待执行时就出现了任务怎么都无法结束,想结束必须我只使用 return 没有任何异步操作才可以。


更多关于HarmonyOS 鸿蒙Next StartupTask.init taskPool异步线程waitOnMainThread为true时 返回Promise 无法结束掉任务的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

您好,我们已识别到了这个问题,预计下个版本修复哈

更多关于HarmonyOS 鸿蒙Next StartupTask.init taskPool异步线程waitOnMainThread为true时 返回Promise 无法结束掉任务的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


方便提供个Demo不,光看描述有点不直观哈

在HarmonyOS(鸿蒙)系统中,当使用Next StartupTask.init方法并设置taskPool异步线程的waitOnMainThreadtrue时,如果返回的Promise无法结束掉任务,这通常意味着任务在等待主线程上的某个条件或事件,但该条件或事件未能被正确触发或处理。

这可能是由于以下几个原因造成的:

  1. 主线程事件未触发:如果任务在等待主线程上的某个事件(如UI更新、用户交互等),但该事件没有按预期发生,那么任务将无法继续执行。

  2. Promise链未正确处理:在Promise链中,如果某个环节没有正确返回或处理Promise,那么整个链可能会中断,导致任务无法结束。

  3. 资源竞争或死锁:在多线程环境下,如果存在资源竞争或死锁情况,那么任务可能会被阻塞,无法继续执行。

为了解决这个问题,可以检查以下几点:

  • 确保主线程上的事件能够按预期触发。
  • 检查Promise链中的每个环节,确保都正确处理了Promise。
  • 分析是否存在资源竞争或死锁情况,并尝试避免或解决这些问题。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部