我在片段中使用了一个RxJava ReplaySubject。
我试图以一种方式使用ReplaySubject,我希望主题在完成之前执行一个进程(可能超过片段的生命周期)。
在这个过程完成后,我想释放我理解的-as的资源--在注册观察者时取消订阅(在我的例子中,这就是主题本身)。
github发布线程 @benjchristensen说:
如果它是一个可观测的,那么它应该发出一个onCompleted并完成。 如果它是一个观察者,那么当它调用Observable.subscribe时,它应该从它收到的订阅中取消订阅,它将给观察到的用户一个关闭和清理的机会。
如果它是一个主题,-which既是观察者又是可观察的--行为是什么?如果我在这个主题上调用onComplete,这基本上意味着订阅被停止了吗?因此,我不必通过注册观察者来手动取消订阅?
发布于 2014-09-03 15:28:10
主体是一个相对较薄的层,在可观察到的基础上,允许您从可观察到的外部源输入onNext()
、onCompleted()
和onError()
调用。他们的取消订阅行为和可观察的行为是一样的。如果在主题上调用onCompleted()
或onError()
,则订阅者将被取消订阅。不需要对从unsubscribe()
返回的订阅调用Observable.subscribe()
。
对于ReplaySubject
,请注意,在垃圾收集之前不会清理资源。即使在onCompleted()
被调用到ReplaySubject
上之后,订户仍然可以订阅,并且它将接收在订阅之前发出的所有原始onNext()
、onCompleted()
或onError()
呼叫。
https://stackoverflow.com/questions/25618270
复制相似问题