SuperAPI AI 工具集

kuikly-coroutines-threading

智能体与模型

查看项目

更新于 10-15 23:56

技能介绍

本技能用于指导 Kuikly 中的协程与多线程异步编程。核心约束:所有 Kuikly UI 操作(View、Attr、Event、observable、Module 方法、setTimeout 等)只能在 Kuikly 线程调用,UI 相关类非线程安全;异步任务完成后必须回到 Kuikly 线程才能更新 UI 或访问响应式属性;动态化场景不支持 kotlinx 协程,只能用 Module 机制或 Kuikly 内建协程。

三种协程方式:一、Kuikly 内建协程,框架自带、始终在 Kuikly 线程执行、无线程切换开销、支持动态化,入口包括 GlobalScope.launch、lifecycleScope.launch(绑定 Pager 生命周期,推荐)及 async/await,但 API 本身非线程安全,不能在 Kuikly 线程外调用;二、kotlinx.coroutines,支持多线程调度器(Default/IO/Main 等),不支持动态化,需按平台引入依赖;三、kuiklyx.coroutines,提供 Dispatchers.Kuikly 调度器与 KuiklyContextScheduler 回调 API,用于从非 Kuikly 线程切回 Kuikly 线程。

选择建议:仅简化回调用内建协程;需耗时任务且支持动态化用 Module 机制(可配合内建协程);需多线程且不需动态化用 kotlinx 协程加 kuiklyx 协程;Compose DSL 页面(继承 ComposeContainer)用 LaunchedEffect 加 withContext,LaunchedEffect 默认在 Kuikly 线程,withContext(Dispatchers.IO) 切到 IO 线程执行耗时任务后自动返回 Kuikly 线程。同一模块应保持一致,避免混用多套异步方案。

线程安全方面可用 Pager.VERIFY_THREAD、Pager.VERIFY_REACTIVE_OBSERVER 与 Pager.verifyFailed 开启并自定义校验。常见陷阱包括在非 Kuikly 线程更新 observable 或调用 Module 方法、动态化中使用 kotlinx 协程、未处理 Pager 销毁后的回调(需检查 cancel 参数)、在 verifyFailed 回调中操作 UI 等。详细场景示例与代码见 SCENARIOS.md、线程安全细节见 THREAD_SAFETY.md。