美文网首页
Rx java总结 一

Rx java总结 一

作者: 18岁的编程少年 | 来源:发表于2020-01-07 14:07 被阅读0次

    内容参考 吴小龙rxjava,非常感谢龙同学给出这么优质的内容参考,由于他很早之前就已经编写,使用的java来演示的,本文都是以kotlin 的语法跟大家演示的,但是主体的内容未发生改变,再次感谢吴小龙

    关于概念我就不再赘述... 网上太多了

    这是我使用架包的版本


    implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    

    观察者模式


    RxJava的世界里,我们有四种角色:
    Observable(被观察者)、Observer(观察者)
    Subscriber(订阅者)、Subject
    Observable和Subject是两个“生产”实体,Observer和Subscriber是两个“消费”实体。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。

    回调方法


    Subscribe方法用于将观察者连接到Observable,你的观察者需要实现以下方法:

    • onNext(T item)
      Observable调用这个方法发射数据,方法的参数就是Observable发射的数据,这个方法可能会被调用多次,取决于你的实现。

    • onError(Exception ex)
      当Observable遇到错误或者无法返回期望的数据时会调用这个方法,这个调用会终止Observable,后续不会再调用onNext和onCompleted,onError方法的参数是抛出的异常。

    • onComplete
      正常终止,如果没有遇到错误,Observable在最后一次调用onNext之后调用此方法。

    创建操作 create

    create(ObservableOnSubscribe<String> { emitter ->
                emitter.onNext("Hello")
                emitter.onNext("Rxjava")
                emitter.onComplete()
            }).observeOn(Schedulers.io())
                .subscribeOn(AndroidSchedulers.mainThread())
                .subscribe({
                    Log.d("RxjavaStu", it)
                }, {}, {
                    Log.d("RxjavaStu", "onCompleted")
                })
    

    打印的结果


    com.example.rxjavastu D/RxjavaStu: Hello
    com.example.rxjavastu D/RxjavaStu: Rxjava
    com.example.rxjavastu D/RxjavaStu: onCompleted
    

    just


    just函数,它接受一至九个参数,返回一个按参数列表顺序发射这些数据的Observable。

    just("Hello", "RxJava")
          .subscribe { 
              Log.d("RxjavaStu", it)
          }           
    

    打印的结果


      com.example.rxjavastu D/RxjavaStu: Hello
      com.example.rxjavastu D/RxjavaStu: RxJava
    

    变换操作 Map


    操作符对原始Observable发射的每一项数据应用一个你选择的函数,然后返回一个发射这些结果。
    如下,将原始Observable数据转化成大写,再发射:

    just("Hello", "RxJava")
                    .map {
                        it.toUpperCase()
                    }
                    .subscribe {
                        Log.d("RxjavaStu", it)
                    }
    

    打印的结果


    com.example.rxjavastu D/RxjavaStu: HELLO
    com.example.rxjavastu D/RxjavaStu: RXJAVA
    

    fromArray

    它和just有着相同的功能,都是接受数据源并创建一个被观察者对象。不同的是fromArray可以接受可变长参数对象(其实就是一个数组),它会把数组中的每个元素发射出来

    fromArray("Hello", "RxJava")
                    .subscribe {
                        Log.d("RxjavaStu", it)
                    }
    

    点击跳转下一章 总结二

    相关文章

      网友评论

          本文标题:Rx java总结 一

          本文链接:https://www.haomeiwen.com/subject/hfvractx.html