1、create操作符
使用Create操作符从头开始创建一个Observable,给这个操作符传递一个接受观察者作为参数的函数,我们需要实现call方法发射一些数据,并恰当的调用观察者的onNext,onError和onCompleted方法。
create方法默认不在任何特定的调度器上执行。
create操作符是所有创建型操作符的“根”,也就是说其他创建型操作符最后都是通过create操作符来创建Observable的
Observable.create(new Observable.OnSubscribe<Integer>() {
@Override public void call(Subscriber<? super Integer> subscriber) {
for (int i = 0; i < 5; i++) {
subscriber.onNext(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).subscribe(new Action1<Integer>() {
@Override public void call(Integer integer) {
Log.d("TAG",String.valueOf(integer));
}
});
2、from操作符
(1)定义:将其它种类的对象和数据类型转换为Observable
(2)特点:将某个对象转换为Observable对象,
然后依次的从对象(可能是Array或Iterable对象)中拿取数据,一个一个的发送。
(3)数据格式如下5种形式:
from(array)
from(Iterable)
from(Future)
from(Future,Scheduler)
from(Future,timeout, timeUnit)
代码示例:
public void from(){
String str[]={"one","two","three","four"};
Observable.from(str).subscribe(new Subscriber<String>() {
@Override public void onCompleted() {
Log.d("TAG","发送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(String s) {
Log.d("TAG",s);
}
});
}
3、just操作符
(1)定义:Just将单个数据转换为发射那个数据的Observable,创建一个发射指定值的Observable
(2)介绍:
Just将单个数据转换为发射那个数据的Observable,创建一个发射指定值的Observable。
Just类似于From,但是From会将数组或Iterable的素具取出然后逐个发射,而Just只是简单的原样发射,
将数组或Iterable当做单个数据。
如果需要空Observable你应该使用Empty操作RxJava将这个操作符实现为just函数,它接受一至十个参数,
返回一个按参数列表顺序发射这些数据的Observable。
如果看它的源码的话,你会发现其实它是对from的封装,他调用的还是from。
源码:
public static <T> Observable<T> just(T t1, T t2) {
return from((T[])new Object[] { t1, t2 });
}
代码示例:
Observable.just("one","two","three","four").subscribe(new Subscriber<String>() {
@Override public void onCompleted() {
Log.d("TAG","发送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(String s) {
Log.d("TAG",s);
}
});
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
Observable.just(list).subscribe(new Subscriber<List<String>>() {
@Override public void onCompleted() {
Log.d("TAG","发送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(List<String> list) {
Log.d("TAG",list.toString());
}
});
4、range操作符
(1)range操作符发射一个范围内的有序整数序列,你可以指定范围的起始和长度。
(2)range有两个参数,第一参数是起始的位置,第二个参数是要输出的个数,
两个参数都是整型数据。一般可以结合Iterable对象和数组使用。
代码示例:
final List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
Observable.range(0,2).subscribe(new Subscriber<Integer>() {
@Override public void onCompleted() {
Log.d("TAG","发送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(Integer integer) {
Log.d("TAG",list.get(integer));
}
});
当然创建操作符不止这些,我只是列举出一些比较常用的操作符,想要了解更多的操作符,点击这里。可能写的不是很好,若有问题,欢迎在评论下方提意见。