假设我有一个在应用程序的不同部分之间共享的可流动的。
在我希望观察的每个片段中,我将其转换为带有LiveData的LiveDataReactiveStreams.fromPublisher,以避免泄漏和崩溃。现在我有了一个包装我流动的LiveData。
然后将LiveData传递给我的ViewModel (在ViewModelFactory中)。据我所知,我可以继续使用LiveData,而不必担心泄漏。
现在,我不打算直接观察LiveData,而是尝试将其转换为LiveDataReactiveStreams.toPublisher和Flowable.fromPublisher可流的流,然后订阅可流的。现在,这是一个可流动的包,它包装了一个LiveData,它包装了一个可流动的
我的问题是:我是否需要担心如何处理这个可流动的订阅?我希望LiveData能起到“屏障”的作用,防止我的上下文泄漏回根流,但我对此不太确定。
换言之:
当片段被销毁时,C中访问的视图会泄漏到A吗?
发布于 2017-12-26 11:16:33
考虑到目前执行情况,您仍然需要手动处理订阅。生命周期仅用于处理实时数据的观察。
mLiveData.observe(mLifecycle, LiveDataSubscription.this);只有当请求了非正数的项目并发送错误时,该观察才会自动取消。这就解决了订阅问题。由于生产者永远不会完成,它将永远不会单独释放订阅,因此,如果您不自己处理订阅,您就会泄漏订阅。
https://stackoverflow.com/questions/47884393
复制相似问题