我想从我的应用程序轮询一个服务,所以我可以定期刷新数据(约15分钟)。但是,启动时也需要相同的数据。我正在使用Retrofit& RxAndroid。
我可以很容易地立即获取网络数据(或者每当呼叫返回时),我一直在努力进行这样的重复呼叫:
return mNetworker.getInitializationProperites(deviceId)
.observeOn(Schedulers.io()) // database i/o will need done
.subscribeOn(Schedulers.io())
.delay(20L, TimeUnit.SECONDS) // 20 seconds for testing
.repeat()
.subscribe(onNext, RxErrorHandler.handle(), onComplete);
此方法(以及使用timer
和interval
的其他方法)可以使时间间隔正确,但会延迟传递结果。特别是,在上面,我知道web服务立即被点击,然后等待20秒才能实际发出结果。
有没有办法可以结合ASAP& amp;还安排自己无限期重复?我的另一个想法是创建两个不同的observable并分别订阅它们,但似乎我错过了一些东西。
答案 0 :(得分:1)
您可以从网络可观察的timer
Observable和flatMap
开始,而不是从网络可观察开始并重复它,类似
Observable.timer(0L, 20L, TimeUnit.SECONDS).flatMap(i -> doNetworkRequest())