我正在从事一个经常使用 Rx Java 订阅和可观察对象的项目,我对这个概念还很陌生。我想知道处理它们的最佳做法是什么。目前,我只是取消了 doOnUnsubscribe()
函数中的订阅/可观察对象,以及使用 takeUntil()
和 PublishSubject
来触发断开可观察对象。这是清理这些引用的正确方法还是有更好的方法?谢谢!
最佳答案
当订阅自然结束时,通过 onCompleted()
或 onError()
,订阅被清除。如果您使用:
Subscription sub = observable.subscribe( value -> doSomeStuff() );
然后调用sub.unsubscribe()
将释放资源。
您还可以使用 CompositeSubscription
来保存所有未完成的订阅。当您对组合执行 clear()
时,所有包含的订阅都将被取消订阅并删除;当您从组合中unsubscribe()
时,包含的所有订阅都将被取消订阅,然后组合订阅本身也将被取消订阅。
清空资源可能无法达到您想要的效果,也不需要这样做,尤其是在有多个订阅的情况下。
关于java - 如何清理 Rx Subscription 和 Observable 以防止内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347939/