1. Rxjava的四種線程切換
Schedulers.io() : 代表io操作的線程, 通常用於網絡,讀寫文件等io密集型的操作
Schedulers.computation(): 代表CPU計算密集型的操作, 例如需要大量計算的操作
Schedulers.newThread(): 代表一個常規的新線程
AndroidSchedulers.mainThread(): 代表Android的主線程
2.RxJava的基本使用 (IO線程做耗時操作並通知,主線程接受數據處理)
Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> e) { //io線程中做類似耗時處理 for (int i = 0; i < 3; i++) { try { Thread.sleep(1000); } catch (InterruptedException ex) { ex.printStackTrace(); } e.onNext("延時處理" + i); } // 結束後通知 e.onComplete(); } }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<String>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(String value) { // 主線程接受數據 Log.i("zzkk", "onNext value = " + value); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } });
3.Rxjava的Actions 主要作用是替代不想使用subscribe的四種複寫方法,需要哪個寫哪個
//使用 onNextAction 來定義 onNext()
Observable.just("zzkk", "hero").subscribe(onNextAction);
//使用 onNextAction 和 onErrorAction 來定義 onNext() 和 onError()
Observable.just("zzkk", "hero").subscribe(onNextAction, onErrorAction);
//使用 onNextAction、 onErrorAction 和 onCompletedAction 來定義 onNext()、 onError() 和 onCompleted()
Observable.just("zzkk", "hero").subscribe(onNextAction, onErrorAction, onCompletedAction);
//但是在rxjava的源碼裏,還是將action轉換爲subscribe進行處理,只是方便使用
4.Rxjava常見操作符含義
Observable 的創建
from()
just()
create()
interval()
timer()
range()
error()
defer()
重做
repeat()
repeatWhen()
重試
retry()
retryWhen()
變換
map()
flatMap()
過濾
filter()
first()
last()
skip()
skipLast()
take()
takeLast()
sample()
elementAt()
elementAtOrDefault()
ignoreElements()