假设我有一个Flowable,它在应用程序的不同部分之间共享。
在我想要观察它的每个片段中,我将其转换为带有LiveDataReactiveStreams.fromPublisher
的LiveData,以避免泄漏和崩溃。我现在有一个包装我的Flowable的LiveData。
然后我将LiveData传递给我的ViewModel(在ViewModelFactory中)。据我了解,我可以继续使用LiveData而不必担心泄漏。
现在,我不想直接观察LiveData,而是想把它转换回带有LiveDataReactiveStreams.toPublisher
和Flowable.fromPublisher
的Flowable,而是订阅Flowable。现在这是一个Flowable,它包装了一个包装Flowable
我的问题是:我是否要担心处理此Flowable的订阅?我希望LiveData可以作为一个“障碍”,防止我的上下文泄漏回根Flowable,但我不太确定。
换句话说:
当片段被销毁时, C 中访问的视图会泄漏到 A 吗?
答案 0 :(得分:2)
考虑current implementation,您仍需要手动关注订阅。生命周期仅用于处理实时数据的观察。
mLiveData.observe(mLifecycle, LiveDataSubscription.this);
只有在请求非正数量的项目并发送错误时,才会自动取消观察。然后处理订阅。由于制作人永远不会完成它,所以永远不会自己处理订阅,因此如果您不自行处理订阅,您将会泄漏订阅。