我是否需要处理使用 LiveDataReactiveStreams 创建的发布者
Do I need to dispose() Publishers created using LiveDataReactiveStreams
假设我有一个在应用程序的不同部分之间共享的 Flowable。
在我想要观察的每个片段中,我将其转换为具有 LiveDataReactiveStreams.fromPublisher
的 LiveData 以避免泄漏和崩溃。我现在有一个包裹我的 Flowable 的 LiveData。
然后我将 LiveData 传递到我的 ViewModel(在 ViewModelFactory 中)。据我了解,我可以继续使用 LiveData 而不必担心泄漏。
现在,我没有直接观察 LiveData,而是想通过 LiveDataReactiveStreams.toPublisher
和 Flowable.fromPublisher
将其转换回 Flowable 并改为订阅 Flowable。现在这是一个 Flowable,它包裹着一个 LiveData,它包裹着一个 Flowable
我的问题是:我是否需要担心处理这个 Flowable 的订阅?我希望 LiveData 将充当 "barrier",防止我的上下文泄漏回根 Flowable,但我对此不太确定。
换句话说:
- Flowable A 存在于全局上下文中
- 在每个片段中,A 被包裹在 LiveData B 中,它被设置为片段 ViewModel[ 的 属性 =41=]
- 当我通常观察 LiveData B 时,我将其包装在 Flowable C
中
- 我订阅了 Flowable C 并忽略了返回的 disposable
当片段被销毁时,在 C 中访问的视图是否会泄漏到 A?
考虑到 current implementation,您仍然需要手动处理订阅。生命周期仅用于处理实时数据的观察。
mLiveData.observe(mLifecycle, LiveDataSubscription.this);
仅当请求的项目数量为非正值并发送错误时,才会自动取消观察。然后处理订阅。由于生产者永远不会完成,它永远不会自行处理订阅,因此如果您不自己处理订阅,就会泄露订阅。
假设我有一个在应用程序的不同部分之间共享的 Flowable。
在我想要观察的每个片段中,我将其转换为具有 LiveDataReactiveStreams.fromPublisher
的 LiveData 以避免泄漏和崩溃。我现在有一个包裹我的 Flowable 的 LiveData。
然后我将 LiveData 传递到我的 ViewModel(在 ViewModelFactory 中)。据我了解,我可以继续使用 LiveData 而不必担心泄漏。
现在,我没有直接观察 LiveData,而是想通过 LiveDataReactiveStreams.toPublisher
和 Flowable.fromPublisher
将其转换回 Flowable 并改为订阅 Flowable。现在这是一个 Flowable,它包裹着一个 LiveData,它包裹着一个 Flowable
我的问题是:我是否需要担心处理这个 Flowable 的订阅?我希望 LiveData 将充当 "barrier",防止我的上下文泄漏回根 Flowable,但我对此不太确定。
换句话说:
- Flowable A 存在于全局上下文中
- 在每个片段中,A 被包裹在 LiveData B 中,它被设置为片段 ViewModel[ 的 属性 =41=]
- 当我通常观察 LiveData B 时,我将其包装在 Flowable C 中
- 我订阅了 Flowable C 并忽略了返回的 disposable
当片段被销毁时,在 C 中访问的视图是否会泄漏到 A?
考虑到 current implementation,您仍然需要手动处理订阅。生命周期仅用于处理实时数据的观察。
mLiveData.observe(mLifecycle, LiveDataSubscription.this);
仅当请求的项目数量为非正值并发送错误时,才会自动取消观察。然后处理订阅。由于生产者永远不会完成,它永远不会自行处理订阅,因此如果您不自己处理订阅,就会泄露订阅。