HarmonyOS 鸿蒙Next使用taskpool.SequenceRunner导致APP崩溃
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参数不会崩溃,但是这样会有另外一个问题, 多线程下添加的任务不是严格串行执行的。
针对您提到的HarmonyOS鸿蒙Next系统中使用taskpool.SequenceRunner
导致APP崩溃的问题,这通常与任务执行中的资源竞争、线程安全问题或任务中的异常处理不当有关。以下是一些可能的原因分析:
-
资源竞争:
SequenceRunner
用于顺序执行任务,但如果任务中涉及共享资源访问,未做好同步处理可能导致资源竞争,进而引发崩溃。 -
线程安全:确保所有在
SequenceRunner
中执行的任务都是线程安全的,避免多线程环境下的数据不一致问题。 -
异常处理:检查任务中的异常处理逻辑,确保所有可能的异常都被捕获并妥善处理,避免异常导致程序崩溃。
-
任务依赖:如果任务之间存在依赖关系,确保依赖关系正确设置,避免任务执行顺序错误导致的崩溃。
-
系统兼容性:确认您的代码与HarmonyOS鸿蒙Next系统的兼容性,有时新版本系统可能引入新的API或修改原有行为,导致旧代码不兼容。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。