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()