RXjava(一)

2018-06-04  本文已影响0人  火星局

rxjava 响应式变成,自然好处多多在,这里不做更多解释。

Rxjava、RxAndroid

Rxjava : https://github.com/ReactiveX/RxJava

RxAndroid : https://github.com/ReactiveX/RxAndroid

RxAndroid 最新版本查看

这里使用的版本为:

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

笔记

  1. rxjava1重要的元素
    Observable 被观察者,通过create方法创造一个可被观察的序列,通过subscribe 去注册一个观察者
    Observer 观察者 ,用来接收数据,作为Observable的subscribe 方法的参数
    subscription 订阅 ,用于描述被观察者和观察者之间的关系,用于取消订阅和获取当前的订阅状态
    onSubscribe 当订阅时,触发此接口调用,向订阅者发射数据
    subscriber 实现了Observer和Subscription,只有自己才能阻止自己

UML图


image.png

2.背压
概念:

3.Rxjava2

//无背压
Observable.create(new ObservableOnSubscribe<String>() {
                    @Override
                    public void subscribe(ObservableEmitter<String> e) throws Exception {
                        if (!e.isDisposed()) {
                            e.onNext("1");
                            e.onNext("2");
                            e.onNext("3");
                            e.onNext("4");
                            e.onNext("5");
                            e.onNext("6");
                            e.onNext("7");
                            e.onNext("8");
                            e.onNext("9");
                            e.onNext("10");
                            e.onComplete();
                        }
                    }
                }).subscribe(new Observer<String>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        System.out.println("onSubscribe");
                    }

                    @Override
                    public void onNext(String value) {
                        System.out.println("onNext:" + value);
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {
                        System.out.println("onCompleted");
                    }
                });

//有背压
 Flowable.create(new FlowableOnSubscribe<String>() {
                    @Override
                    public void subscribe(FlowableEmitter<String> e) throws Exception {
                        if (!e.isCancelled()) {
                            e.onNext("test");
                            e.onComplete();
                        }
                    }
                }, BackpressureStrategy.DROP).subscribe(new Subscriber<String>() {
                    @Override
                    public void onSubscribe(Subscription s) {
                        s.request(Long.MAX_VALUE);
                        System.out.println("onSubscribe");
                    }

                    @Override
                    public void onNext(String s) {
                        System.out.println("onNext:" + s);
                    }

                    @Override
                    public void onError(Throwable t) {

                    }

                    @Override
                    public void onComplete() {
                        System.out.println("onCompleted");
                    }
                });

-UML图


image.png
上一篇下一篇

猜你喜欢

热点阅读