create是最基础的创建方法
Observable.create(new Observable.OnSubscribe() {
@Override
public void call(Subscriber super String> subscriber) {
subscriber.onNext("吉格斯实验室");
}
}).subscribe(new Subscriber() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(String s) {
System.out.println("onNext: " + s);
}
});
just相当于create的简写
Observable.just("吉格斯实验室").subscribe(new Subscriber() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(String s) {
System.out.println("onNext: " + s);
}
});
from相当于just的集合形式
Observable.from(new Integer[]{1, 2, 3, 4}).subscribe(new Subscriber() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(Integer s) {
System.out.println("onNext: " + s);
}
});
defer在我们调用create的时候不会创建subscribe对象,只有在我们订阅的时候才会创建。
empty创建一个空的observable对象,回调onComplete()方法。
never不回调任何方法。
throw回调onError()方法
interval间隔事件发送(相当于定时器)
range创建一个范围内的数据的事件发送
repeat发送一个特定的数据事件,重复发送
start回调onStart()方法
timer进行一个延时后发送数据事件
map把一个对象转换成另一个对象(类型转换),比如下面将Integer转为String
Observable.just(123).map(new Func1() {
@Override
public String call(Integer integer) {
return String.valueOf(integer);
}
}).subscribe(new Subscriber() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
flatmap是一个一对多或者多对多的转换,转换后的是一个Observable对象,例如下面将integer转换为string
Observable.just(1, 2, 3, 4, 5).flatMap(new Func1>() {
@Override
public Observable extends String> call(Integer integer) {
return Observable.just(String.valueOf(integer));
}
}).subscribe(new Subscriber() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
groupby是通过指定规则对数据类别进行分类,例如下面我们对1,2,3,4,5进行了分组
Observable.just(1, 2, 3, 4, 5).groupBy(new Func1() {
@Override
public Integer call(Integer integer) {
return integer % 2;
}
}).subscribe(new Subscriber>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(GroupedObservable integerIntegerGroupedObservable) {
}
});
buffer可以一次订阅多个,onNext的回调是一个集合
scan将数据累加来发送事件给观察者
Observable.range(1, 5).scan(new Func2() {
@Override
public Integer call(Integer sum, Integer integer) {
return sum + integer;
}
}).subscribe(new Subscriber() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Integer integer) {
}
});
window可以通过时间间隔来分割成列表发送到观察者
debuounce的意思是在规定时间间隔外才发送数据(间隔内数据忽略)
distinct是一个去重操作符,可以去掉列表数据中重复的数据项
elementAt取出列表数据指定位置的元素
filter通过指定的规则返回boolean值来确定是否过滤掉某些数据项
first取出列表数据项的第一个数据
ignoreElements不回调onNext,只调用onComplete()和onError()
last取出列表数据项的最后一个数据
sample(采样发送)每隔一定时间采样数据列表一起发送给观察者
skip跳过列表数据项的前几项
skiplast跳过列表数据项的后几项
take取列表数据项的前几项
takelast取列表数据项的后几项
zip是通过定义的组合规则将两列数据进行组合后发送给观察者
merge是将两列数据通过时间合并成一列新数据列发送给观察者
startwith在数据列表之前插入一个数据发送给观察者
combineLatest将两个列表通过某规则组合成一个数据列表
swichOnNext将拥有很多小的Observable数据对象组合成一个Obserable数据对象
onErrorResumeNext 当原始Observable在遇到错误时,使用备用Observable
Observable.just(1,"2",3)
.cast(Integer.class)
.onErrorResumeNext(Observable.just(1,2,3))
.subscribe(integer -> Log.d("JG",integer.toString())) //1,2,3
;
当原始Observable在遇到异常时,使用备用的Observable。与onErrorResumeNext类似,区别在于onErrorResumeNext可以处理所有的错误
当原始Observable在遇到错误时发射一个特定的数据
retry 当原始Observable在遇到错误时进行重试
Observable.just(1,"2",3)
.cast(Integer.class)
.retry(3)
.subscribe(integer -> Log.d("JG",integer.toString()),throwable -> Log.d("JG","onError"))
;//1,1,1,1,onError