android面试(RxJava)

RxJava:一个在JVM上使用可观测的序列来组成异步的,基于事件的程序的库。说白了就是异步

优势:

使用:

先明白三个概念:

Observable被观察者,Observer观察者,Subscribe订阅

android面试(RxJava)_第1张图片

上游Observable和下游observer通过subscribe建立连接,总共就3步:创建上游,创建下游,建立连接。

android面试(RxJava)_第2张图片

android面试(RxJava)_第3张图片

可以有个很简便的链式写法:

android面试(RxJava)_第4张图片

subscribe()有很多重载的方法,以下为1~6:

 public final Disposable subscribe() {}
    public final Disposable subscribe(Consumer onNext) {}
    public final Disposable subscribe(Consumer onNext, Consumer onError) {} 
    public final Disposable subscribe(Consumer onNext, Consumer onError, Action onComplete) {}
    public final Disposable subscribe(Consumer onNext, Consumer onError, Action onComplete, Consumer onSubscribe) {}
    public final void subscribe(Observer 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

 

你可能感兴趣的:(android面试(RxJava))