RxJava2在调用completed或error时是否可以自动处理?

RxJava2在调用completed或error时是否可以自动处理?,java,rx-java,rx-java2,Java,Rx Java,Rx Java2,我有一个关于RxJava上的处理的问题。我在Github上的RxSwift文档中找到了下面这句话 当序列发送completed或error事件时,计算序列元素的所有内部资源都将被释放 要立即取消序列元素的生成并释放资源,请对返回的订阅调用dispose 如果我理解正确,在调用onCompleted或onError后,资源(可观察对象)将被释放 所以问题是,RxJava是否做了与RxSwift相同的事情,还是我需要自己调用dispose?是的,所有相关的资源都将被自动释放。为了说明如何使用RxJa

我有一个关于RxJava上的处理的问题。我在Github上的RxSwift文档中找到了下面这句话

当序列发送
completed
error
事件时,计算序列元素的所有内部资源都将被释放

要立即取消序列元素的生成并释放资源,请对返回的订阅调用dispose

如果我理解正确,在调用
onCompleted
onError
后,资源(可观察对象)将被释放


所以问题是,RxJava是否做了与RxSwift相同的事情,还是我需要自己调用dispose?

是的,所有相关的资源都将被自动释放。为了说明如何使用RxJava 2运行以下测试:

boolean isDisposed = false;

@Test 
public void testDisposed(){
    TestObserver<Integer> to = Observable.<Integer>create(subscriber -> {
        subscriber.setDisposable(new Disposable() {

            @Override
            public boolean isDisposed() {
                return isDisposed;
            }

            @Override
            public void dispose() {
                isDisposed = true;
            }
        });
        subscriber.onComplete();
    }).test();

    to.assertComplete();
    assertTrue(isDisposed);
}
boolean isDisposed=false;
@试验
公共空间{
TestObserver to=可观察。创建(订阅服务器->{
subscriber.setDisposable(新的Disposable(){
@凌驾
公共布尔值isDisposed(){
返回显示;
}
@凌驾
公共空间处置(){
isDisposed=true;
}
});
subscriber.onComplete();
}).test();
to.assertComplete();
资产真实性(isDisposed);
}

我肯定在某个地方读到,
.isDisposed()
不保证返回
true
,除非显式调用了
.dispose()
方法。对于
.isDisposed()
,一个
可观察的
可以完成并且仍然返回
false
。如果它自动处理,为什么不调用doOnDispose()?同意@RobertLewis,我认为这是不能保证的。阅读更多:@PavelPoley你可以在这里找到答案-