HarmonyOS 主线程处理大数据导致卡死

​请求server接口获取数据后,需要对数据进行解密处理,如果数据量很大(百公里级的坐标点),主线程解析数据会导致卡死崩溃。该如何正确处理?

this.dataProcessor.process(result) 是个耗时操作,数据量大的时候可能在5秒以上。​

HarmonyOS
6h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

​TaskPool注意事项实现任务的函数需要使用装饰器@Concurrent标注,且仅支持在.ets文件中使用。

从API version 11开始,实现任务的函数需要使用类方法时,该类必须使用装饰器@Sendable标注,且仅支持在.ets文件中使用。

任务函数在TaskPool工作线程的执行耗时不能超过3分钟(不包含Promise和async/await异步调用的耗时,例如网络下载、文件读写等I/O任务的耗时),否则会被强制退出。

实现任务的函数入参需满足序列化支持的类型,详情请参见TaskPool和Worker支持的序列化类型。

ArrayBuffer参数在TaskPool中默认转移,需要设置转移列表的话可通过接口setTransferList()设置。

由于不同线程中上下文对象是不同的,因此TaskPool工作线程只能使用线程安全的库,例如UI相关的非线程安全库不能使用,具体请见多线程安全注意事项。

序列化传输的数据量大小限制为16MB。请确认下是否按照要求使用TaskPool。​https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/taskpool-introduction-V5#taskpool%E8%BF%90%E4%BD%9C%E6%9C%BA%E5%88%B6

分享
微博
QQ
微信
回复
2h前
相关问题
HarmonyOS主线程线程切换问题
447浏览 • 1回复 待解决
HarmonyOS 主线程刷新UI
136浏览 • 1回复 待解决
Worker的宿主线程必须是主线程吗?
337浏览 • 1回复 待解决
TaskPool子线程主线程如何通信
2259浏览 • 1回复 待解决
怎样判断当前线程是否是主线程
400浏览 • 1回复 待解决
如何判断是否为主线程
987浏览 • 1回复 待解决
如何判断当前线程是否是主线程
2308浏览 • 1回复 待解决
如何处理应用卡死(appfreeze)问题
1954浏览 • 1回复 待解决
JSON.parse数据处理导致精度丢失问题
185浏览 • 1回复 待解决
HarmonyOS 主线程的优先级是多少?
10浏览 • 0回复 待解决
异步是否对主线程有影响
416浏览 • 1回复 待解决