我是Rx android.i的新手,我试图在不同的时间间隔内调用Web服务。
每1分钟呼叫Api 4小时30分钟,然后每5分钟呼叫3小时30分钟
是否可以使用Rx android.if可以让我知道如何做到这一点?
Observable.interval(1,TimeUnit.MINUTES).takeWhile(Observable.timer(30,TimeUnit.MINUTES).concatWith(Observable.interval(5,TimeUnit.MINUTES).takeWhile(Observable.timer(30,TimeUnit.MINUTES).flatMap(new Func1<Long, Observable<?>>() {
@Override
public Observable<?> call(Long aLong) {
return null;
}
}).subscribe((new Observer<Object>() {
@Override
public void onCompleted() {
Log.e("working", "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.e("working", "onComThrowablepleted");
}
@Override
public void onNext(Object o) {
Log.e("working", "onNext");
}
});
))
答案 0 :(得分:2)
您可以使用interval
,takeUntil
,timer
和concatWith
:想法是使用interval
并在30分钟后停止,然后使用其他interval
。
// 1 events per minutes
Observable.interval(1, MINUTES)
// and stop it after 30 minutes
.takeUntil(Observable.timer(30, MINUTES))
// then 1 events per 5 minutes, and stop it after 30 minutes
.concatWith(Observable.interval(5, MINUTES).takeUntil(Observable.timer(30, MINUTES)))
// perform webservice call
.flatMap(time -> webservice.call())
.subscribe();