首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxJava1和RxJava2之间的区别

RxJava1和RxJava2之间的区别
EN

Stack Overflow用户
提问于 2016-07-17 23:50:47
回答 3查看 10.4K关注 0票数 21

我一直在看RxJava1 https://github.com/ReactiveX/RxJava/releases和RxJava2 https://github.com/ReactiveX/RxJava/wiki/Reactive-Streams的文档,唯一的不同之处在于RxJava 2有Java Stream。

还有什么不同的吗?

我一直在使用1.1.3版本,但我不确定是否值得迁移到RxJava2,因为我们已经在代码中使用Java8流

致以问候。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-18 06:13:32

Java1.x和2.x都被设计为Java,因此我们在任何版本中都不支持RxJava 8 6+。这是为了保持对无数Android设备和版本的支持,这些设备和版本永远不会更新到Java 8兼容的运行时。如果您需要Java8支持,可以考虑使用Pivotal中的Reactor-Core

两者之间的主要区别是,2.x直接针对Reactive-Streams SPI,为此,它已完全从头开始重写。我们目前处于开发预览模式,您可以按照2.x branch readme中的说明进行访问。

2.x的完全重写大大提高了我们的内存消耗和性能;比较各种版本和库的here is a benchmark

在API表面上,我们计划继续支持1.x中存在的所有运算符,并可能在1.x上的支持结束之前,用新的运算符扩展两个版本几年。

由于2.x是一个新的架构,许多依赖的库(例如Retrofit)也必须更新;这可能不会在今年8月底之前发生,或者也可能需要几个月的时间才能赶上。包含差异亮点的Here is the wiki page

票数 29
EN

Stack Overflow用户

发布于 2016-08-27 20:58:47

因为我已经在 中实现了RxJava2

以下是RxJava2和RxJava1之间的区别:

  1. 允许RxJava 1.x和RxJava 2.x并列在一起,RxJava 2.x在maven坐标io.reactivex.rxjava2:rxjava:2.x.y下,类可以在maven坐标下访问从1.x切换到2.x必须重新组织它们的导入。但在没有拖尾d
  2. CompositeSubscription运算符的情况下,使用已删除的运算符Function
  3. Func2 BiFunction
  4. limit -> onComplete -> CompositeDisposable CompositeDisposable in CompositeSubscription Subscription -> -> take in RxJava2

在Reactive-Streams规范之上,RxJava 2.0已经完全从头开始重写。该规范本身是从RxJava 1.x发展而来的,并为反应式系统和库提供了一个通用的基准。

由于Reactive-Streams具有不同的体系结构,因此它要求对一些众所周知的RxJava类型进行更改。

RxJava2的性能更好内存使用率更低优于RxJava1

[来源: https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0 ]

票数 23
EN

Stack Overflow用户

发布于 2017-05-16 03:46:17

其中一个主要区别是.filter运算符。如文档所述:

此外,需要谓词的运算符不再使用Func1<T, Boolean>,而是具有单独的原语返回类型Predicate<T> (由于没有自动装箱,因此允许更好的内联)。

因此,对于.filter操作符,您需要像下面的示例一样进行更改

代码语言:javascript
复制
        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 */);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38423079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档