RxJava1和RxJava2之间的差异
我一直在看RxJava1和RxJava2的文档,看起来唯一的不同是RxJava2有Java流 还有其他不同的吗 我一直在使用版本1.1.3,但我不确定是否值得迁移到RxJava2,因为我们已经在代码中使用了Java8流RxJava1和RxJava2之间的差异,java,java-8,rx-java,Java,Java 8,Rx Java,我一直在看RxJava1和RxJava2的文档,看起来唯一的不同是RxJava2有Java流 还有其他不同的吗 我一直在使用版本1.1.3,但我不确定是否值得迁移到RxJava2,因为我们已经在代码中使用了Java8流 注意。RxJava 1.x和2.x都是为Java 6+设计的,因此我们不能在任何版本中支持Java 8流。这是为了保持对无数Android设备和版本的支持,这些设备和版本永远不会更新到与Java 8兼容的运行时。如果需要java 8的支持,请考虑使用Pivotal。 两者之间的主
注意。RxJava 1.x和2.x都是为Java 6+设计的,因此我们不能在任何版本中支持Java 8流。这是为了保持对无数Android设备和版本的支持,这些设备和版本永远不会更新到与Java 8兼容的运行时。如果需要java 8的支持,请考虑使用Pivotal。 两者之间的主要区别在于2.x直接以反应流SPI为目标,为此,它已经从头完全重写。我们目前处于开发预览模式,您可以按照中所述访问该模式 完全重写2.x大大提高了内存消耗和性能;比较各种版本和库 在API表面上,我们计划继续支持1.x中存在的所有操作符,并可能在1.x上的支持结束之前用新的版本将这两个版本扩展几年
由于2.x是一种新的体系结构,许多依赖的库(例如,改造)也必须更新;这很可能不会在今年8月底之前发生,也可能需要几个月才能赶上。这包含了差异的亮点。正如我在中实现的RxJava2 以下是RxJava2和RxJava1之间的区别:
io.reactivex.rxjava2:RxJava:2.x.y
下,并且可以在io.reactivex
下访问类onCompleted
->onComplete
-不带尾随的dCompositeSubscription
->CompositeDisposable
-CompositeDisposable
,因为CompositeSubscription
和Subscription
已被删除Func1
->Function
Func2
->BiFunction
limit
运算符已被删除-在RxJava2中使用take
[来源:]一个主要区别适用于
.filter
运算符。如文件所述:
此外,需要谓词的运算符不再使用Func1
,而是具有单独的原始返回类型predicate
(由于没有自动装箱,因此允许更好的内联)
因此,对于.filter
操作符,您需要像下面的示例一样进行更改
RxTextView.textChanges(editText)
.debounce(400, TimeUnit.MILLISECONDS)
.filter(new Predicate<CharSequence>() {
@Override
public boolean lengthOk(CharSequence charSequence) {
return charSequence.length() > 3;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(/* attach your observer */);
rxtview.textChanges(编辑文本)
.debounce(400,时间单位毫秒)
.filter(新谓词(){
@凌驾
公共布尔长度(CharSequence CharSequence){
返回charSequence.length()>3;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(/*附上您的观察员*/);
我想说,唯一的区别在于它使用了Java 8中引入的新链接。您是否阅读了您提供的第二个链接?“RXJava1.x不直接实现反应流API”和“RXJava2.x将直接针对反应流API”。对我来说,这听起来像是一个很大的区别:将它从不直接实现API改为直接实际实现API。是的,我读到了,但我只是想确定是否还有其他区别。你最初的假设是,唯一的变化是它需要Java 8+。这与改变API有什么相似之处?你没有任何意义。你想要什么?每项变更的详细清单?比较一下源代码,我不是这么说的,因为我不知道。我只是说,区别不仅仅是需要Java8。如果这不是你的问题,你应该修改你的问题,说出你真正想问什么。