RxJava:一个在JVM上使用可观测的序列来组成异步的,基于事件的程序的库。说白了就是异步
优势:
使用:
先明白三个概念:
Observable被观察者,Observer观察者,Subscribe订阅
上游Observable和下游observer通过subscribe建立连接,总共就3步:创建上游,创建下游,建立连接。
可以有个很简便的链式写法:
subscribe()有很多重载的方法,以下为1~6:
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) {}
1:无参数,下游不关心任何事件
2:只关心next事件
3,只关心next和error,其他同理。
线程调度:
尽可能使用内置schedeler,因为在RxJava内部使用线程池来维护这些线程,效率较高。
Schedulers.io():io操作,用于网络,读写文件等io密集型操作
Schedulers.computation():CPU计算密集型操作,用于需要大量计算的操作
Schedulers.newThread():新开线程
AndroidSchedulers.mainThread():代表Android主线程
网络请求时,如果activity退出了,下游无法更新UI了怎么办?
RxJava中内置了一个容器CompositeDisposable,每次得到一个Disposable就调用add方法添加到容器中,所以当退出时,调用CompositeDisposable.clear()即可切断所有水管。
参考:https://www.jianshu.com/u/c50b715ccaeb