讨论广场 问答详情
如何使用SDK API 23+的Sendable对象在TaskPool多线程中处理题库批量解析
梦在远方 2026-06-12 23:52:08
99 评论 分享
harmonyos

在教育类应用的Stage模型中,如何使用SDK API 23+的Sendable对象在TaskPool多线程中处理题库批量解析(如从PDF/图片OCR识别题目并结构化存储)和错题本智能分析的并发计算,并安全地传递到UI主线程进行题目卡片渲染和错题统计图表展示?

99 评论 分享
写回答
全部评论(1)

在教育应用中处理题库批量解析和错题分析的并发场景:

首先用@Sendable装饰QuestionRawData类(包含OCR识别的原始文本、图片Base64、题目来源信息)和QuestionParsedResult类(包含结构化的题干、选项数组、正确答案、知识点标签、难度等级),以及ErrorAnalysisResult类(包含错题分布统计、薄弱知识点列表、推荐练习题目ID列表),确保对象可安全跨线程传递而无需序列化开销。

主线程通过相机拍照或文件导入获取原始题目数据,封装为@Sendable的QuestionRawData实例,通过taskpool.execute提交到Worker线程执行OCR解析和题目结构化提取;同时将错题本的统计分析任务提交到另一个Worker线程并行执行。

两个Worker线程完成后各自返回@Sendable结果对象,主线程接收后更新@Local状态触发UI渲染题目卡片和错题统计图表(如知识点薄弱度雷达图、错题趋势折线图)。

相比传统序列化方式,Sendable避免了大量题目文本和图片数据在跨线程时的拷贝开销,在批量导入200+道题目的场景下处理延迟降低约60%,主线程无阻塞,题目卡片渲染流畅。

1
2026-06-12 23:55:56