repeat操作符就是对某一个Observable重复产生多次结果,当repeat() 接收到onComplete()会触发重订阅,默认情况下运行在一个新的线程上
Observable.range(1, 5).repeat(5).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { LogUtils.d("-------->" + integer); } });
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->1
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->2
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->3
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->4
02-20 09:31:30.403 4824-4824/com.rxandroid.test1 D/----->: -------->5
repeatWhen 不是很好理解,就是可以让订阅者多次订阅,如:第一次订阅1-5 间隔6秒后又会重新订阅一次
Observable.range(1, 5).repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>() { @Override public Observable<?> call(Observable<? extends Void> observable) { return Observable.timer(6, TimeUnit.SECONDS); } }).subscribe(new Observer<Integer>() { @Override public void onCompleted() { LogUtils.d("------------->onCompleted"); } @Override public void onError(Throwable e) { LogUtils.d("------------->onError:" + e); } @Override public void onNext(Integer integer) { LogUtils.d("------------->onNext:" + integer); } });