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()
本文深入解析RxJava的四种线程切换策略,包括Schedulers.io()、Schedulers.computation()、Schedulers.newThread()和AndroidSchedulers.mainThread()。同时,通过实例演示了如何在IO线程执行耗时操作,并在主线程接收数据,还介绍了RxJava Actions的使用方法,以及常见操作符如map、flatMap、filter等的含义。

4346

被折叠的 条评论
为什么被折叠?



