RxAndroid 3 主线程

Dun*_*una 5 user-interface android threadpool rx-java

我正在尝试在 Rx3 中找到 subscribeOn 的主线程

Single.just(getHeavyData())
                                .subscribeOn(Schedulers.io())
                                .observeOn(AndroidSchedulers.mainThread())
                                .subscribe(new Consumer<Data>() {
                                    @Override
                                    public void accept(Data d) throws Throwable {
                                        setAdapters(d);
                                    }
                                });
Run Code Online (Sandbox Code Playgroud)

AndroidSchedulers.mainThread() - 与全新的 RX3 不兼容

Gradle导入: implementation "io.reactivex.rxjava3:rxjava:3.0.0-RC3"

我们如何找到主线程以对 UI 进行更改?

vs.*_*kur 8

AndroidSchedulers.mainThread() 不是 Rx Java 1,2 或 3 的一部分。它是 RxAndroid 库的一部分。将 RxAndroid 依赖项添加到您的项目中,您将获得此方法。

RxAndroid仍然使用RxJava2。在库的创建者进行更新之前,这个问题仍然存在。

新的包结构已随 3.0.0-RC2 一起发布,并且有一个支持库,以便 v2 和 v3 可以相互通信,而不会出现以前隐藏或明显的编译/运行时问题。这也意味着模块覆盖技巧不再起作用,因此您必须手动桥接 AndroidSchedulers 或从 Retrofit 中使用的 v2 源进行转换,直到这些(以及许多其他)库开始支持 v3。

请参考这个这个

  • 尝试在新项目中使用 Rx3。错误是“错误:不兼容的类型:io.reactivex.Scheduler无法转换为io.reactivex.rxjava3.core.Scheduler” (2认同)