RxJava调用一次性dispose()

时间:2018-09-08 20:10:40

标签: android rx-java retrofit rx-java2 rx-android

我正在使用rxjava进行改造。在以下代码中,subscribeOn()和observeOn()继续运行。该应用程序会自行终止并不断启动。

disposable = api.getUsers("135")
                .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                users -> showResult(users)
            })

如果我在上述操作之后立即处理,则不会获取完整的数据。所以我的问题是何时处置可分配性或如何知道subscribeOn()和observeOn()何时完成任务。

1 个答案:

答案 0 :(得分:1)

您可以disposeonDestroy()中的Activity

或者您也可以像这样使用DisposableSingleObserver

Disposable disposable = yourApi.subscribeWith(new DisposableSingleObserver<List<String>>() {

        @Override
        public void onSuccess(List<String> values) {
            // work with the resulting values
        }

        @Override
        public void onError(Throwable e) {
            // handle the error case
        }
    });
  

然后使用结果(在本示例中为当您不再需要值(api响应)时,可以调用dispose

    disposable.dispose();

放置观察者的最佳位置将在onDestory()中,这将是您不再需要api结果的位置:

protected void onDestroy(){
    super.onDestroy();
    disposable.dispose();
}