以下的创建方法不需要手动再重新调用Subscriber中的方法
一、just方法
创建发送指定值的Observerble,just只是简单的原样发射,将数组或Iterable当做单个数据。如果传递的值为null,则发送的Observable的值为null。参数最多为9个
Observable<String> myObservable = Observable.just("just1","just1","just1","just1","just1","just1","just1","just1","just1","just1");
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
System.out.println(s);
}
@Override
public void onCompleted() {
System.out.println("onCompleted.................");
}
@Override
public void onError(Throwable e) {
System.out.println("onError....................");
}
};
myObservable.subscribe(mySubscriber);
运行的结果:
二、from方法
将数据转换成为Observables,而不是需要混合使用Observables和其它类型的数据
String[]items = {"just1","just1","just1","just1","just1","just1"};
Observable<String> myObservable = Observable.from(items);
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
System.out.println(s);
}
@Override
public void onCompleted() {
System.out.println("onCompleted.................");
}
@Override
public void onError(Throwable e) {
System.out.println("onError....................");
}
};
myObservable.subscribe(mySubscriber);
三、repeat方法
1.repeat()重复地执行某个操作,如果不传递参数,结果将会被无限地重复执行,默认在trampoline
调度器上执行,该方法为非静态方法,不可以直接通过Observable来调用
String[]items = {"just1","just2","just3","just4","just5","just6"};
Observable<String> myObservable = Observable.from(items).repeat();
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
System.out.println(s);
}
@Override
public void onCompleted() {
System.out.println("onCompleted.................");
}
@Override
public void onError(Throwable e) {
System.out.println("onError....................");
}
};
myObservable.subscribe(mySubscriber);
2.repeat()如果传入数字类型的参数,则重复地执行指定次数的某个操作,默认在trampoline
调度器上执行,不可以直接通过Observable来调用
String[]items = {"just1","just2","just3","just4","just5","just6"};
Observable<String> myObservable = Observable.from(items).repeat(2);
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
System.out.println(s);
}
@Override
public void onCompleted() {
System.out.println("onCompleted.................");
}
@Override
public void onError(Throwable e) {
System.out.println("onError....................");
}
};
myObservable.subscribe(mySubscriber);
运行结果:
3.repeatWhen()不是缓存和重放原始Observable的数据序列,而是有条件的重新订阅和发射原来的Observable,当Observable中的call()方法中调用了重复执行的代码时,onNext()将会被重复执行。如果该方法执行后返回void,则结束执行
final String[]items = {"just1","just2","just3","just4","just5","just6"};
Observable<String> myObservable = Observable.from(items).repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>() {
@Override
public Observable<?> call(Observable<? extends Void> observable) {
return observable.delay(5, TimeUnit.SECONDS);
}
});
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
System.out.println("onNext.................."+s);
}
@Override
public void onCompleted() {
System.out.println("onCompleted.................");
}
@Override
public void onError(Throwable e) {
System.out.println("onError....................");
}
};
myObservable.subscribe(mySubscriber);
运行结果:
4.doWhile
属于可选包rxjava-computation-expressions
,不是RxJava标准操作符的一部分。doWhile
在原始序列的每次重复后检查某个条件,如果满足条件才重复发射。
5.whileDo
属于可选包rxjava-computation-expressions
,不是RxJava标准操作符的一部分。whileDo
在原始序列的每次重复前检查某个条件,如果满足条件才重复发射。