用途:为 Kotlin Multiplatform(KMP)项目提供跨平台协程配置,统一异步操作中的调度器、作用域与 Flow 共享方式,减少 Android 与 iOS 之间的平台差异处理。
主要能力:
- 平台调度器抽象:定义 PlatformDispatcher 接口与 expect object PlatformDispatchers,暴露 main、io、default、unconfined 四个调度器;Android 侧映射到 Dispatchers.Main/IO/Default/Unconfined,iOS 侧通过 NSQueueDispatcher 与 DispatchQueueDispatcher 包装 dispatch_queue_t 实现主队列与全局队列调度。
- 通用作用域:提供 ApplicationScope(应用级,SupervisorJob + 主调度器 + 异常处理)、ViewScope(视图/呈现器生命周期,可取消子任务)、useCaseScope()(单次操作用,io 调度器)。
- Flow 共享模式:StateFlow 的 shareIn 扩展、Flow 的 cachedIn 缓存扩展、结合 Lifecycle 事件的 collectWhileActive 与 repeatOnViewActive,实现按生命周期启停收集。
- 仓库层封装:BaseRepository 提供 execute、flowFrom、databaseQuery、networkCall(含 withTimeout 超时)等方法,统一 Result 包装并正确重抛 CancellationException。
- 用例基类:BaseUseCase、BaseNoParamsUseCase、FlowUseCase,以 operator invoke 返回 Result 或 Flow<Result>。
- 后台任务:BackgroundWorker 按 key 管理周期性任务,支持 start、stop、stopAll。
- 测试辅助:TestPlatformDispatcher 基于 StandardTestDispatcher,提供 advanceUntilIdle,供 commonTest 使用。
依赖:commonMain 引入 kotlinx-coroutines-core 1.7.3 与 kotlinx-datetime 1.6.0,androidMain 引入 kotlinx-coroutines-android 1.7.3;iOS 侧未见额外依赖说明。
使用方式:将调度器接口与各平台 actual 实现放入对应 source set,在业务代码中通过 PlatformDispatchers 获取调度器,避免直接使用 Dispatchers.Main;仓库与用例继承相应基类;测试中替换为 TestPlatformDispatcher。
适用场景:KMP 移动端共享代码中的网络请求、数据库查询、UI 状态流与后台轮询等异步逻辑。
限制与建议:资料建议不要使用 GlobalScope、不在生产代码中用 runBlocking、不吞掉异常、不直接使用 Dispatchers.Main;取消异常需重新抛出。文中未提供完整的项目级安装命令、兼容版本范围与 iOS 侧全部实现细节,暂未提供官方发布与维护说明。