Android retofit+;rxjava如何使用repeatwhen处理动态请求参数

Android retofit+;rxjava如何使用repeatwhen处理动态请求参数,android,rx-java,Android,Rx Java,我使用改型+rxjava来处理基本的http get请求。该请求将每5秒重复一次。repeatwhen完全满足要求,在请求参数不变的情况下工作良好 在我的测试用例中,参数在每次请求时都会变化,下面的代码不起作用 netInterface .postRequest(requestData) .repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>

我使用改型+rxjava来处理基本的http get请求。该请求将每5秒重复一次。repeatwhen完全满足要求,在请求参数不变的情况下工作良好

在我的测试用例中,参数在每次请求时都会变化,下面的代码不起作用

netInterface
            .postRequest(requestData)
            .repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>() {
                @Override
                public Observable<?> call(Observable<? extends Void> observable) {

                    requestData.setFreeMemory(x);
                    return observable.just(reqeustData).delay(5, TimeUnit.SECONDS);
                }
            })
            .subscribeOn(Schedulers.newThread())
            .observeOn(Schedulers.newThread())
            .subscribe(this.requestSubscriber);
netInterface
.postRequest(requestData)
.repeatWhen(新功能1>(){
@凌驾

public Observable call(Observable您使用了一些似乎是最好的解决方案的方法,但继续使用这种模式似乎并不惯用。请查看并让我知道您的想法!首先是Psuedo代码,然后我将编写真正的Java。只想趁这个想法还新鲜的时候把它记下来

Observable.combineLatest(getTextToGetObservable, Observable.interval(5, SECONDS)
            .subscribe(netInterface::postRequest)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this.requestSubscriber);
另外,请注意,您可能需要研究您的subscribeOn/observeOn逻辑。它现在可能不会给您带来任何问题,但归根结底,它可能也肯定不会显得很地道

因此,虽然我的答案并不能准确回答您关于如何使用Repeat何时解决此问题的问题,但我希望此答案能帮助您解决提出请求的问题(GET或POST——正如另一位评论者所指出的,你的问题同时使用了这两种方法。不用担心!这很容易做到。我只是想确保每个阅读我答案的人都不会像我一开始那样困惑。我将用一个快速应用程序测试这段代码,看看它是否有效。如果有效,我将正确格式化代码

代码本身存在一些小问题,因为它不是一个每5秒演示一次发射的完美示例,但这是一个希望降低示例复杂性而不是懒惰的问题。我也很累,但这不是我在这里要使用的借口。我还将上传此视频,以便您可以看到世界卫生组织我在解决这个问题时所经历的过程。我很想知道是否有更好的方法。基于我过去对RxJava和反应式编程的奇妙体验,这当然不会让我感到惊讶

我还将上传我在解决这个问题过程中所做的记录,并在视频准备好后将其链接


随着时间的推移,我会给这个答案添加注释,我会考虑更多的问题,但首先,这个过程的取消订阅没有处理方法。这将无限期地继续,直到包含它的过程被清理干净。我稍后会在完整的示例中添加正确的处理方法。

只是一个任务你提到你想要获取请求,你正在使用带有接口的#postRequest方法。你得到解决方案账单了吗?