如何使用SDK API 23+的Sendable对象在TaskPool多线程中处理题库批量解析
梦在远方 2026-06-12 23:52:08 harmonyos
在教育类应用的Stage模型中,如何使用SDK API 23+的Sendable对象在TaskPool多线程中处理题库批量解析(如从PDF/图片OCR识别题目并结构化存储)和错题本智能分析的并发计算,并安全地传递到UI主线程进行题目卡片渲染和错题统计图表展示?
您需要先 登录 才能评论/回答
全部评论(1)
在教育应用中处理题库批量解析和错题分析的并发场景:
首先用@Sendable装饰QuestionRawData类(包含OCR识别的原始文本、图片Base64、题目来源信息)和QuestionParsedResult类(包含结构化的题干、选项数组、正确答案、知识点标签、难度等级),以及ErrorAnalysisResult类(包含错题分布统计、薄弱知识点列表、推荐练习题目ID列表),确保对象可安全跨线程传递而无需序列化开销。
主线程通过相机拍照或文件导入获取原始题目数据,封装为@Sendable的QuestionRawData实例,通过taskpool.execute提交到Worker线程执行OCR解析和题目结构化提取;同时将错题本的统计分析任务提交到另一个Worker线程并行执行。
两个Worker线程完成后各自返回@Sendable结果对象,主线程接收后更新@Local状态触发UI渲染题目卡片和错题统计图表(如知识点薄弱度雷达图、错题趋势折线图)。
相比传统序列化方式,Sendable避免了大量题目文本和图片数据在跨线程时的拷贝开销,在批量导入200+道题目的场景下处理延迟降低约60%,主线程无阻塞,题目卡片渲染流畅。
2026-06-12 23:55:56
