美文网首页Android开发Android开发经验谈Android开发
RxJava系列专题 (一) --- 基本概述

RxJava系列专题 (一) --- 基本概述

作者: 墨迹_T | 来源:发表于2019-03-17 21:05 被阅读4次

    一、前言

        虽然之前也有学习过RxJava,但是因为公司项目没有使用,所以也只是了解了它的一些好处。最近新入职了一家公司,里面大量使用了RxJava,也是时候做一下系统的学习了。关于RxJava的好处现在我先不提,相信你也听说了很多,但是任何一个好的工具能真正帮助到你的前提是,你要长期的去使用,我也相信,再真正的使用过程中,你也能和我一样体会到它真正的精髓。

    二、简介

        我们都知道RxJava是一种观察者模式,所以就会有观察者Observer和被观察者Observable。两者中间通过一系列的操作符,将被观察的对象进行转化、筛选等操作,通过subscribe()方法进行绑定,最终发送到观察者上。如下段代码:

           val observable = Observable.create<Int> { emitter ->
                emitter.onNext(1)
                emitter.onNext(2)
                emitter.onNext(3)
                emitter.onComplete()
            }
            val observer = object :Observer<Int>{
                override fun onSubscribe(d: Disposable?) {
    
                }
    
                override fun onNext(value: Int) {
    
                }
    
                override fun onError(e: Throwable?) {
    
                }
    
                override fun onComplete() {
    
                }
            }
            observable.subscribe(observer)
    

    一般我们会写成链式调用的方式,看起来十分舒畅。

    Observable.create<Int> { emitter ->
                emitter.onNext(1)
                emitter.onNext(2)
                emitter.onNext(3)
                emitter.onComplete()
            }.subscribe(object :Observer<Int>{
                override fun onSubscribe(d: Disposable?) {
    
                }
    
                override fun onNext(value: Int) {
    
                }
    
                override fun onError(e: Throwable?) {
    
                }
    
                override fun onComplete() {
                    
                }
            })
    

    Observable.create是被观察者的创建过程,我们后面会详细介绍,先看下几个接受的回调方法。
        其中onNext()onComplete()onError()就是对应上游emitter中所发送的,emitter顾名思义是一个发射器。几个方法中需要注意的是,你可以发送多个onNext(),但是你只能发送一个onComplete()或者onError()来代表结束,且必须发送。Disposable的翻译是“一次性的”,在这里你可以使用它的 dispose()方法,终止观察。
        如果我们只关注其中的部分回调,subscribe()方法提供了一系列的重载函数如下:

    subscribe(onNext : Consumer)
    subscribe(onNext : Consumer,onError : Consumer)
    subscribe(onNext : Consumer,onError : Consumer,onComplete : Action)
    subscribe(onNext : Consumer,onError : Consumer,onComplete : Action,onSubscribe : Consumer)

    所以,假如我们只关心onNext的话,可以写成:

    Observable.create<Int> { emitter ->
                emitter.onNext(1)
                emitter.onNext(2)
                emitter.onNext(3)
                emitter.onComplete()
            }.subscribe{
                Log.e(TAG,"$it")
            }
    

    三、总结

      RxJava虽然有很多种被观察者,有各种不同的操作符,但是无外乎都是看起来同样的使用方式,只是各自的适用场景不同。现在你已经初步掌握了它,我建议可以在项目中尝试去使用。遇到你需要的场景的时候再去网上进行查找,同时同步的进行一些学习,RxJava能做的比你想的要多。下一章,我们就去来学习创建操作符。

    相关文章

      网友评论

        本文标题:RxJava系列专题 (一) --- 基本概述

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