以不同的时间间隔调用Web服务?

时间:2016-08-01 12:30:50

标签: android timer rx-java rx-android

我是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");

            }
        });
        ))

1 个答案:

答案 0 :(得分:2)

您可以使用intervaltakeUntiltimerconcatWith:想法是使用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();