RxJava2在调用completed或error时是否可以自动处理?
我有一个关于RxJava上的处理的问题。我在Github上的RxSwift文档中找到了下面这句话 当序列发送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
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你可以在这里找到答案-