I have a question about the disposal on RxJava. I found this below sentence on RxSwift document on Github.
When a sequence sends the
completed
orerror
event all internal resources that compute sequence elements will be freed.To cancel production of sequence elements and free resources immediately, call dispose on the returned subscription.
if I understand correctly the resources (observables) will be freed after they call onCompleted
or onError
.
So the question is, does RxJava do the same thing like RxSwift or I need to call the dispose by myself?
Yes, all associated resources will be disposed automatically. To illustrate run following test with 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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With