看了一些网上rxjava教程,做了一些实践实例,自己从新手开始掌握rxjava,感谢前辈们的贡献。这里是我的学习记录,同时也想以最简洁最清晰最快速的方式为后来者引路。

rxjava,响应式编程  - https://github.com/ReactiveX/RxJava          官方文档

如 a = b * c ,b值变化了,a值自动变化,a监听订阅b的变化。

b即为被观察者observable,a为观察者observer,订阅动作为subscribe,observable.subscribe(observer)。

observable可理解为一条数据事件发送通道,如:发送 1、2、3

observer可理解为一条数据事件接收通道,如上面发送1、2、3,这里就会收到1、2、3

---------------------------------------------------------------------------------- 

在项目中添加gradle配置,即可边学边开发测试:

compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

下面结合实例讲解

    public static void sample(){
        Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
                emitter.onNext(1);
                emitter.onNext(2);
                emitter.onNext(3);
                emitter.onComplete();
            }
        });

        Observer<Integer> observer = new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.d(TAG,"observer onSubscribe");
            }

            @Override
            public void onNext(Integer value) {
                Log.d(TAG,"observer onNext : " + value);
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {
                Log.d(TAG,"observer onComplete");
            }
        };
        observable.subscribe(observer);
    }

执行结果为:

observer onSubscribe
observer onNext : 1
observer onNext : 2
observer onNext : 3
observer onComplete

步骤:

  1. 创建observable,执行Observable.create()
  2. 创建observer,执行new Observer()
  3. 拿到observable中的ObservableEmitter(发射器),发射数据执行onNext(T value)
  4. observer便会拿到ObservableEmitter发射的数据

注:

subscribe之后emitter才执行onNext(T value)

observable执行onComplete()或onError()后,可以继续发射数据;observer执行onComplete()或onError()后,不再接收数据

----------------------------------------------------------------------------------

需掌握知识点:

create(new ObservableOnSubscribe)   创建一个observable

subscribe(observer)                           订阅

ObservableEmitter  类                        数据发射器,其包含如下四个方法

    onSubscribe(Disposable d)             订阅成功回调,返回Disposable对象

    onNext(T value)                             提供一个T类型item数据给observer

    onComplete()                                observerable发送items结束后通知observer

    onError(Throwable e)                      当observerable发送数据出错误时

Disposable类                                      mDisposable.dispose();用于取消订阅


subscribe()有多个重载的方法:

public final Disposable subscribe() {}

public final Disposable subscribe(Consumer<? super T> onNext) {}
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {} 
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete) {}
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe) {}
public final void subscribe(Observer<? super T> observer) {}


----------------------------------------------------------------------------------

demo - https://github.com/FreeLeo/rxandroid-demo




参考:

https://github.com/ReactiveX/RxJava          官方文档

https://www.jianshu.com/p/031745744bfa    基础用法实例

https://www.jianshu.com/p/0cd258eecf60    系统教程2.x

http://blog.csdn.net/johnny901114/article/details/51532776   系统教程1.x

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1012/3572.html   详解rxjava



Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐