我正在尝试使用以下方法在主线程上观察可观察到的:
// Kotlin Code
Observable
.observeOn(AndroidSchedulers.mainThread())
但我收到以下错误:
Type Mismatch:
Required: rx.Scheduler!
Found: io.reactivex.Scheduler!
我订阅的 Observable 来自一个用 Java 编写的库,因此使用 RxJava。
我是不是太蠢了,错过了什么?我很困惑:$
提前致谢:)
最佳答案
Required: rx.Scheduler!
Required
表示签名是Observable.observeOn(rx.Scheduler)
Found: io.reactivex.Scheduler!
Found
表示签名是io.reactivex.Scheduler AndroidSchedulers.mainThread()
这意味着 Observable
是一个 RxJava 1 observable,而使用的 RxAndroid 版本是为 RxJava 2 构建的。既然你提到 observable 是由一个库提供的,这意味着该库是使用构建的RxJava 1.
您有 3 个选项来解决此问题:
- 弄清楚相关库是否有 RxJava 2 版本,或者自己为项目贡献这些更新。
- 使用akarnokd/RxJava2Interop将旧的
Observable
转换为 RxJava 2。 (RxJavaInterop.toV2Observable(Observable);
) - 将其他依赖项切换回 RxJava 1。
关于android - 无法使用 RxKotlin 的 'observeOn' 主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43564621/