android面試(RxJava)

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章