HarmonyOS 鸿蒙Next使用taskpool.SequenceRunner导致APP崩溃

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next使用taskpool.SequenceRunner导致APP崩溃

使用 带name参数的 taskpool.SequenceRunner(“logSave”) 导致app 2分钟后崩溃,必现,请问如何解决? let runner: taskpool.SequenceRunner = new taskpool.SequenceRunner(“logSave”);  @Concurrent function saveLog(logEntity: LogEntity) { logger.logSaveUtil.writeLogSync(logEntity) }  export function addLogSaveTask(level: string, tag: string, msg: string, throwable?: string) { let logEntity: LogEntity = new LogEntity(level, tag, msg, throwable) const logSaveTask: taskpool.Task = new taskpool.Task(saveLog, logEntity) runner.execute(logSaveTask).then(() => { }) } 代码如上,使用SequenceRunner 把日志写入文件, 每次打开app 2分钟以后taskpool会挂掉,崩溃日志参见附件。测试发现,new taskpool.SequenceRunner(“logSave”)这段代码,  如果不指定name参数不会崩溃,但是这样会有另外一个问题, 多线程下添加的任务不是严格串行执行的。

1 回复

针对您提到的HarmonyOS鸿蒙Next系统中使用taskpool.SequenceRunner导致APP崩溃的问题,这通常与任务执行中的资源竞争、线程安全问题或任务中的异常处理不当有关。以下是一些可能的原因分析:

  1. 资源竞争SequenceRunner用于顺序执行任务,但如果任务中涉及共享资源访问,未做好同步处理可能导致资源竞争,进而引发崩溃。

  2. 线程安全:确保所有在SequenceRunner中执行的任务都是线程安全的,避免多线程环境下的数据不一致问题。

  3. 异常处理:检查任务中的异常处理逻辑,确保所有可能的异常都被捕获并妥善处理,避免异常导致程序崩溃。

  4. 任务依赖:如果任务之间存在依赖关系,确保依赖关系正确设置,避免任务执行顺序错误导致的崩溃。

  5. 系统兼容性:确认您的代码与HarmonyOS鸿蒙Next系统的兼容性,有时新版本系统可能引入新的API或修改原有行为,导致旧代码不兼容。

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

回到顶部