——》个人平时笔记,看到的同学欢迎指正错误,文中多处摘录于各大博主精华、书籍
各自的职责:Retrofit 负责请求的数据和请求的结果,使用接口的方式呈现;OkHttp 负责请求的过程;RxJava 负责异步,各种线程之间的切换。
水管式的RxJava2.0——给初学者的RxJava2.0教程
1.在RxJava中分为被观察者(Observable),观察者(Observer),订阅(subscribe)。在Observable中ObservableEmitter发射器可以发送多条onNext()信息,在Observer中也可以接收多条,but在Observable中ObservableEmitter发射器发送多个onComplete或onError后,在Observer中只可以接收一条消息。且onComplete或onError只能同时存在一个或者说只会走一个。
2.subscribeOn() 指定的是上游发送事件的线程, observeOn() 指定的是下游接收事件的线程。上游可以指定了多次线程, 但只有第一次指定的有效,而下游接收事件每指定一次线程都会切换一次。
3.最为关键的是onComplete和onError必须唯一并且互斥, 即不能发多个onComplete,也不能发多个onError,如果你的代码逻辑中违背了这个规则, 并不一定会导致程序崩溃 比如发送多个onComplete是可以正常运行的, 依然是收到第一个onComplete就不再接收了, 但若是发送多个onError, 则收到第二个onError事件会导致程序会崩溃.。
e.onNext(response);
e.onError(new AndroidException("error"));
e.onComplete();
先调用onError()->onComplete()程序正常
e.onNext(response);
e.onComplete();
e.onError(new AndroidException("error"));
先调用onComplete()->onError()程序异常报错
e.onNext(response);
e.onError(new AndroidException("error1"));
e.onError(new AndroidException("error2"));
程序异常报错
4.当使用Flowable来实现背压: Observable(上游 被观察者)和Observer(下游 观察者)—变成—>Flowable(上游 被观察者)和Subscriber(下游 观察者)