首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否需要释放使用LiveDataReactiveStreams创建的发布服务器?

是否需要释放使用LiveDataReactiveStreams创建的发布服务器?
EN

Stack Overflow用户
提问于 2017-12-19 10:01:56
回答 1查看 920关注 0票数 9

假设我有一个在应用程序的不同部分之间共享的可流动的。

在我希望观察的每个片段中,我将其转换为带有LiveData的LiveDataReactiveStreams.fromPublisher,以避免泄漏和崩溃。现在我有了一个包装我流动的LiveData。

然后将LiveData传递给我的ViewModel (在ViewModelFactory中)。据我所知,我可以继续使用LiveData,而不必担心泄漏。

现在,我不打算直接观察LiveData,而是尝试将其转换为LiveDataReactiveStreams.toPublisherFlowable.fromPublisher可流的流,然后订阅可流的。现在,这是一个可流动的包,它包装了一个LiveData,它包装了一个可流动的

我的问题是:我是否需要担心如何处理这个可流动的订阅?我希望LiveData能起到“屏障”的作用,防止我的上下文泄漏回根流,但我对此不太确定。

换言之:

  1. 可流动存在于全局上下文中
  2. 在每个片段中,A包装在LiveData B中,该设置为碎片ViewModel的属性
  3. 通常,当我观察LiveData B时,我会将它包装在流动的C中。
  4. 我订阅了可流动的C,并忽略了返回的一次性

当片段被销毁时,C中访问的视图会泄漏到A吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-26 11:16:33

考虑到目前执行情况,您仍然需要手动处理订阅。生命周期仅用于处理实时数据的观察。

代码语言:javascript
复制
mLiveData.observe(mLifecycle, LiveDataSubscription.this);

只有当请求了非正数的项目并发送错误时,该观察才会自动取消。这就解决了订阅问题。由于生产者永远不会完成,它将永远不会单独释放订阅,因此,如果您不自己处理订阅,您就会泄漏订阅。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47884393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档