Rxjava创建类操作符
基本创建
操作符:
create()
描述:创建一个最基本Observable对象
示例:
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("第一条");
emitter.onNext("第二条");
emitter.onNext("第三条");
emitter.onComplete();
}
}).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(String value) {
Log.i(TAG, "onNext接收value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印log:
快速创建
1,just()
描述:快速创建Observable并发送事件。最多只能发送10个参数,它有10个重载方法
示例:
Observable.just(1, 2, 3).subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Integer value) {
Log.i(TAG, "onNext接收value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
2,fromArray()
描述:根据传入的数组快速创建并发送事件。
示例:
String[] arrs = {"一条", "两条", "三条"};
Observable.fromArray(arrs)
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(String value) {
Log.i(TAG, "onNext接收value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
3,fromIterable()
描述:根据传入的List快速创建并发送事件
示例:
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Observable.fromIterable(list)
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Integer value) {
Log.i(TAG, "onNext接收value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
4,empty()
描述:创建后仅发送onComplete事件
示例:
Observable.empty().subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Object o) {
Log.i(TAG, "onNext");
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
5,error()
描述:创建后发送错误事件Error
示例:
Observable.error(new RuntimeException())
.subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Object o) {
Log.i(TAG, "onNext");
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
6,never()
描述:创建后什么都不做
示例:
Observable.never()
.subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Object o) {
Log.i(TAG, "onNext");
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
延时创建
1,defer()
描述:当订阅时重新创建新的Observable
重载:无
示例:
i = 20;
Observable<Integer> observable = Observable.defer(new Callable<ObservableSource<? extends Integer>>() {
@Override
public ObservableSource<? extends Integer> call() throws Exception {
return Observable.just(i);
}
});
i = 30;
observable.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG,"onSubscribe");
}
@Override
public void onNext(Integer value) {
Log.i(TAG,"onNext,value:"+value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG,"onError");
}
@Override
public void onComplete() {
Log.i(TAG,"onComplete");
}
});
打印:
2,timer()
描述:创建一个在给定的延时之后发射数据项为0的Observable
重载:
timer(long,TimeUnit)
,timer(long,TimeUnit,Scheduler)
示例:
Observable.timer(3000, TimeUnit.MILLISECONDS)
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Long value) {
Log.i(TAG, "onNext,value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
3,interval()
描述:创建一个按照给定的时间间隔发射从0开始的整数序列的Observable
重载:
第一类:
interval(long,TimeUnit)
,interval(long,TimeUnit,Scheduler)
,第二类:
interval(long,long,TimeUnit)
,interval(long,long,TimeUnit,Scheduler)
,其中第一个参数为延迟多少时间后开始发送第一个事件,之后按照第二个参数的固定间隔时间发送示例:
Observable.interval(1,TimeUnit.SECONDS)
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Long value) {
Log.i(TAG, "onNext,value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
- 打印:
4,intervalRange()
描述:创建一个按照给定的起始值、发送总数、延时时间和时间间隔来发射整数序列的Observable
重载:
intervalRange(long, long, long, long, TimeUnit)
,intervalRange(long, long, long, long, TimeUnit, Scheduler)
示例:
/**
* 参数1:第几个数字开始
* 参数2:一共发送几个数字
* 参数3:延时多久后开始发送第一个
* 参数4:发送第一个后,每间隔多久发送后续事件
* 参数5:时间单位
*/
Observable.intervalRange(3,5,2,1,TimeUnit.SECONDS)
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Long value) {
Log.i(TAG, "onNext,value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
5,range()
描述:创建一个发射特定整数序列的Observable
重载:
range(int,int)
,range(int,int,scheduler)
示例:
//参数1:从第几个数字开始。参数2:一共发送几个
Observable.range(3,4)
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe");
}
@Override
public void onNext(Integer value) {
Log.i(TAG, "onNext,value:" + value);
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "onError");
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete");
}
});
打印:
6,rangeLong()
描述:创建一个发射特Long类型整数序列的Observable,功能使用与range()相同。
重载:无,只有一个
rangeLong(long,long)
示例:与range()相同