上一篇是对RxJava基本概念的介绍RxJava2.x学习教程(一)基本概念,本文主要介绍常用操作符!操作符官方doc,里面有对各类操作符的讲解!
创建类的操作符
Create
最常用的操作符,用于创建一个具有发射事件能力的被观察者
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("Hello");
emitter.onNext("World");
emitter.onComplete();
}
}).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.e("TAG", s);
}
});
java8箭头函数版:
Observable.create((ObservableOnSubscribe<String>) emitter -> {
emitter.onNext("Hello");
emitter.onNext("World");
emitter.onComplete();
}).subscribe(s ->
Log.e("TAG", s)
);
05-19 15:25:11.290 7170-7170/com.example.rxjava.rxjavademo E/TAG: Hello
05-19 15:25:11.290 7170-7170/com.example.rxjava.rxjavademo E/TAG: World
just
just:只是简单的原样发射,可将数组或Iterable当做单个数据。它接受一至九个参数:
String[] arr = new String[]{
"ss1", "ss2", "ss3"};
List<String> stringList = Arrays.asList(arr);
Observable.just(arr).subscribe(new Consumer<String[]>() {
@Override
public void accept(String[] s) throws Exception {
Log.e("TAG", "" + s.length);
}
});
Observable.just("ss1", "ss2", "ss3").subscribe(s -> Log.e("TAG", s));
Observable.just(stringList).subscribe(s -> Log.e("TAG", "" + s.size()));
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: 3
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: ss1
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: ss2
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: ss3
05-19 15:40:31.740 8273-8273/com.example.rxjava.rxjavademo E/TAG: 3
from系列
from系列可以将数组或Iterable的元素拿出来,做成多个事件进行发射
String[] arr = new String[]{
"ss1", "ss2", "ss3"};
List<String> stringList = Arrays.asList(arr);
Observable.fromArray(arr).subscribe(s -> Log.e("TAG", "array: " + s));
Observable.fromIterable(stringList).subscribe(s -> Log.e("TAG", "list: " + s));
// fromCallable接收一个函数,并将该函的返回值装入事件进行发射
Observable.fromCallable(() -> Arrays.asList(arr)).subscribe(s -> {
Log.e("TAG", "" + s.size());
});
05-19 15:47:47.870 8647-8647/com.example.rxjava.rxjavademo E/TAG: array: ss1
05-19 15:47:47.870 8647-8647/com.example.rxjava.rxjavademo E/TAG: array: ss2
05-19 15:47:47.870 8647-8647/com.example.rxjava.rxjavademo E/TAG: array: ss3
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: list: ss1
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: list: ss2
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: list: ss3
05-19 15:47:47.880 8647-8647/com.example.rxjava.rxjavademo E/TAG: 3
查看源码可以知道Observable.just("ss1", "ss2", "ss3")...
底层调用的就是Observable.fromArray...
Interval
//每隔500ms 在io线程发射一次事件
Observable.interval(