我正在尝试在Rx 3中查找subscribeOn的主线程
Single.just(getHeavyData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Data>() {
@Override
public void accept(Data d) throws Throwable {
setAdapters(d);
}
});
AndroidSchedulers.mainThread()-与全新的RX 3不兼容
Gradle导入:implementation "io.reactivex.rxjava3:rxjava:3.0.0-RC3"
我们如何找到主线程以便对UI进行更改?
5条答案
按热度按时间h5qlskok1#
mainThread()不是Rx Java 1、2或3的一部分。它是RxAndroid库的一部分。将RxAndroid依赖项添加到您的项目中,您将获得此方法。
RxAndroid仍然使用RxJava 2。在库的创建者更新之前,这个问题仍然存在。
新的软件包结构已经在3.0.0-RC 2中发布,并且有一个支持库,这样v2和v3就可以互相通信,而不会有以前隐藏或公开的编译/运行时问题。这也意味着模块覆盖技巧不再起作用,所以你必须手动桥接AndroidSchedulers或从Retrofit中使用的v2源代码转换,直到这些(和许多其他)库开始支持v3。
请参考此和this
htrmnn0y2#
这是导入的问题。在意识到需要引用RxJava3之前,我也遇到过类似的问题。请将这些导入用于调度器和可处置单观察器
此外,如果服务的方法返回Single use
6psbrbz93#
有一个类似的问题,兼容性问题是从一个单一的导入。即使我使用的是RxJava3库和RxAndroid3,我仍然使用:
但在将单曲指向以下内容时得到解决:
u4vypkhs4#
检查您的导入,您可能正在导入类似以下内容:
但您应该导入类似以下内容:
implementation 'io.reactivex.**rxjava3**:rxandroid:3.0.0'
(检查最新版本)解决了我的问题
8nuwlpux5#
添加这些依赖项,您就可以很好地使用了。
https://github.com/ReactiveX/RxAndroid#binaries