我在我的片段中使用RxJava ReplaySubject。
我试图以某种方式使用ReplaySubject,我希望Subject执行一个过程直到完成(可能超出了片段的寿命)。
完成此过程后,我想释放资源(据我所知),该资源是通过在注册观察者(在我的情况下,是主题本身)时取消订阅来完成的。
在这个github问题中,线程@benjchristensen说:
如果它是一个Observable,则应发出onCompleted并完成。
如果它是观察者,则它应该从调用Observable.subscribe时收到的订阅中取消订阅,这将使Observable有机会关闭和清理。
如果它是一个主题-既是观察者又是可观察者-行为是什么?如果我在该主题上调用onComplete,这是否基本上意味着订阅已停止,因此我无需通过注册观察者来手动取消订阅我得到的订阅?
主题是上可观察到的,允许你饲料的顶部相对较薄的层onNext()
,onCompleted()
并onError()
从外部可观察源呼叫。他们的取消订阅行为与可观察者相同。如果在主题上调用onCompleted()
或onError()
,则订阅者将被取消订阅。无需调用unsubscribe()
从返回的订阅Observable.subscribe()
。
对于ReplaySubject
,请注意,直到对资源进行垃圾收集后,才会清理资源。即使在onCompleted()
上被呼叫之后ReplaySubject
,订户仍然可以订阅,并且它将接收所有原始onNext()
,onCompleted()
或onError()
在订阅之前进行的呼叫。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句