android - 无法使用 RxKotlin 的 'observeOn' 主线程

标签 android kotlin rx-java2 rx-kotlin kotlin-interop

我正在尝试使用以下方法在主线程上观察可观察到的:

    // 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 个选项来解决此问题:

  1. 弄清楚相关库是否有 RxJava 2 版本,或者自己为项目贡献这些更新。
  2. 使用akarnokd/RxJava2Interop将旧的 Observable 转换为 RxJava 2。 (RxJavaInterop.toV2Observable(Observable);)
  3. 将其他依赖项切换回 RxJava 1。

关于android - 无法使用 RxKotlin 的 'observeOn' 主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43564621/

相关文章:

android - Flutter redux StoreConnector vs StoreBuilder

android - 重复构建失败 "To use Coroutine features, you must add ` ktx`......"

java - Kotlin - 作为尾随 Lambda 的接口(interface)

methods - 无法更新Kotlin方法参数的值

java - E/Android运行时: FATAL EXCEPTION: RxNewThreadScheduler-42

java - Android RxJava 将嵌套的自定义列表组合在一个列表中

java - 如何编写数字+字符串的验证?

java - 如何在开始和测试期间使用 Appium "wait to activity"?

android - 使用 Retrofit 调用 api

android - 具有不同渐变的自定义背景颜色