SuperAPI AI 工具集

rxjava-to-coroutines-migration

编程与开发

查看项目

更新于 10-16 10:35

技能介绍

用途

该技能面向 Android 或 Kotlin 代码库,用于指导并执行从 RxJava 到 Kotlin Coroutines 与 Flow 的异步代码迁移。当用户提出将 RxJava 的 Observables 等结构转换为 Coroutines/Flow 时,可使用此技能。

主要能力

技能提供一套迁移映射指南,涵盖:

  • 基础类型转换:Single 转为 suspend 函数返回单个值;Maybe 转为返回可空值的 suspend 函数;Completable 转为无返回值的 suspend 函数;Observable 与 Flowable 转为 Flow。
  • Subject 转 Hot Flow:PublishSubject 转为 MutableSharedFlow;BehaviorSubject 转为 MutableStateFlow(需要初始值);ReplaySubject 转为 MutableSharedFlow(replay = N)。
  • Scheduler 转 Dispatcher:Schedulers.io() 对应 Dispatchers.IO;Schedulers.computation() 对应 Dispatchers.Default;AndroidSchedulers.mainThread() 对应 Dispatchers.Main。subscribeOn 与 observeOn 通常由 withContext 或 flowOn 替代。
  • 操作符映射:map、filter、delay 等一一对应;flatMap 对应 flatMapMerge 或 flatMapConcat;switchMap 对应 flatMapLatest;doOnNext/doOnSuccess 对应 onEach;onErrorReturn/onErrorResumeNext 对应 catch;startWith 对应 onStart;combineLatest 对应 combine;zip 对应 zip。
  • 执行与生命周期:subscribe() 对应 collect {} 或在 CoroutineScope 中直接调用;Disposable.dispose() 对应 Job.cancel();CompositeDisposable.clear() 对应取消父 CoroutineScope 或 Job。

使用方式

技能描述的执行步骤包括:分析 RxJava 链、转换数据源、重写操作符、更新订阅、处理错误、处理线程。技能要求在 ViewModel 或 Presenter 中把 .subscribe(...) 替换为 launch { ... } 和 .collect { ... },并确保 launch 绑定到正确生命周期作用域(如 viewModelScope)。错误处理方面,用 try/catch 包裹挂起函数,或在 Flow 上使用 .catch { }。线程处理方面,移除 .subscribeOn() 和 .observeOn(),按需使用 withContext 或 .flowOn()。技能还提供一个 RxJava 与 Coroutines/Flow 的示例转换对照。

适用场景

适用于需要将 Android 或 Kotlin 项目中的 RxJava 异步逻辑逐步迁移至 Coroutines 与 Flow 的场景,尤其涉及仓库层、ViewModel 或 Presenter 中的订阅、错误处理和线程调度改造。

限制

官方未提供具体支持的 RxJava 版本范围、迁移规模限制、是否支持自动化批量替换等细节;技能也未说明对 RxJava 全部操作符的覆盖程度。上述功能、步骤和映射均来自所给资料,未提供的部分暂未提供。