以不同的时间间隔调用网络服务?
Call web service with different time interval?
我是 Rx 的新手 android.i 我正在尝试在不同的时间间隔调用 Web 服务。
拨打 Api 4 小时,每 1 分钟通话一次,持续 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");
}
});
))
可以使用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();
我是 Rx 的新手 android.i 我正在尝试在不同的时间间隔调用 Web 服务。
拨打 Api 4 小时,每 1 分钟通话一次,持续 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");
}
});
))
可以使用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();