Rxjava onNext不通过改造可观察到射击

时间:2016-06-12 00:45:28

标签: android retrofit2 rx-android

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

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。

1 个答案:

答案 0 :(得分:2)

不要使用doOnNext,只需使用map。并尝试使用lambdas,使您的代码更具可读性。

{{1}}

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

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