gpt4 book ai didi

android - Rxjava onNext 不通过改造观察触发

转载 作者:太空狗 更新时间:2023-10-29 13:13:13 27 4
gpt4 key购买 nike

我有这个简单的 retrofit2 api 接口(interface),其中包含

interface Api {
@GET(BuildConfig.END_POINT) Observable<Response> fetchData();
}

所以当我做一个新的请求时一切都很好但是假设我发出一个请求,我立即取消订阅,然后我尝试发出新请求,它什么都不返回。

因此,在代码中它看起来像这样:

在 Activity::onPause 中我执行取消订阅,在 Activity::onResume 中我再次触发请求。

我的请求看起来像这样::

api.fetchData()
.timeout(30,TimeUnit.SECONDS)
.doOnNext(new Action1<Response>() {
@Override public void call(Response response) {
list = response.getDataForList();
}
}).flatMap(new Func1<Response, Observable<List<Object>>>() {
@Override public Observable<Object>> call(Response response) {
return Observable.just(list);
}
});

当我尝试调试它时,进行了调用但没有调用 doOnNext()。没有调用任何生命周期方法。

为了澄清起见,我只是返回我在其他地方使用它的可观察对象,我在主线程上观察并在 IO 上订阅。

最佳答案

不要使用 doOnNext,只使用映射。并尝试使用 lambda,使您的代码更具可读性。

api.fetchData()
.timeout(30,TimeUnit.SECONDS)
.map(response -> response.getDataForList())
.flatMap(list -> Observable.just(list));

现在作为概念,每次某个观察者订阅此可观察对象时消耗项目,然后可观察对象自动取消订阅观察者。因此,您不必担心取消订阅任何内容。

你可以在这里看到一些实际的例子。 https://github.com/politrons/reactive

关于android - Rxjava onNext 不通过改造观察触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37769758/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com