上游为Obsevable,为被观察者,Observer 为观察者
这些操作符主要是
1,创建型操作符:Create()
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("a");
}
}).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
Log.d("MainActivity","onNext:"+s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
2,Just的操作符的使用(内部发射单一对象)
//上游 TODO 先发送"A" 再发送“B”
Observable.just("A","B").subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
Log.d("MainActivity","onNext:"+s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
3,forArray的操作符的使用
String [] str={"1","2","3"};
Observable.fromArray(str).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
Log.d("MainActivity","onNext:"+s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
简写的使用:
Observable.fromArray(str).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.d("MainActivity","onNext:"+s);
}
});
4,empty的使用(做耗时操作,不需要任务数据刷新UI)
注:下游只能是Object对象
//TODO 上游没有发射任务有值的时间,下游无法确定类型,默认Object
Observable.empty()//内部一定会调用onComplete方法完毕事件
//订阅
.subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object o) {
//没有事件可接受
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
//new Consumer里面也是接收不到事件的
5,range操作符的使用
//打印从1,累加到8
// 第一个参数是起始值,第二参数是加的范围
Observable.range(1,8).subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
}
});