java - RxJava2 在调用完成或错误时会自动处理可观察对象吗?

标签 java rx-java rx-java2

我对 RxJava 上的处理有疑问。我在 Github 上的 RxSwift 文档中找到了下面这句话。

When a sequence sends the completed or error 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.

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

那么问题来了,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);
}

关于java - RxJava2 在调用完成或错误时会自动处理可观察对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45589930/

相关文章:

java - 如何在不嵌套调用的情况下串行链接执行两个独立的 Observables?

java - 如何记住 Single 发出的值?

最适合基于表单的应用程序的 RAD 的 Java 框架、库或 IDE?

java - OpenMQ超时后消息丢失

android - java.net.UnknownHostException 无法使用 RxJava 转换为 retrofit2.adapter.rxjava.HttpException

java - 将订阅者添加到单个观察值

rx-java - 按顺序链接多个 Observable

java - 在 CXF 中使用 swagger 生成离线文档

java - java中中文数字的正则表达式

android - 使用 RxJava/RxAndroid 的 Retrofit2 尾递归