当前位置: 首页 > 知识库问答 >
问题:

何时调用CompositeDispose和clear

上官自明
2023-03-14

我的问题可以是如何使用RXJava2的CompositeDisposable的重复?但要求再澄清一个疑点。根据接受的答案

// Using clear will clear all, but can accept new disposable
disposables.clear(); 
// Using dispose will clear all and set isDisposed = true, so it will not accept any new disposable
disposables.dispose(); 

在我的例子中,我使用片段作为我的视图(MVP中的视图层),在某些情况下,我将活动片段添加到backstack,这实际上不会杀死片段,而只是杀死它的视图。这意味着只调用onDestroyView而不调用onDestroy。稍后,我可以回到后面堆栈中的相同片段,所以只有它的视图被重新创建。我有一个CompositeDisposable作为我的BaseFragment的成员,它保存订阅。

我的问题是,我是否应该每次在ondestroyview上对compositedisposable调用clear?以便在视图恢复后它可以再次接受订阅?并在ondestroy上调用dispose,这样当片段本身被销毁时,就不再需要使用可丢弃的文件了?

如果是错误的,什么是正确的处理方式。当必须调用cleardispose时。?

共有1个答案

后凯捷
2023-03-14

您是对的,您可以避免在每次创建相应视图时创建新的CompositeDisposable,而是将CompositeDisposable视为绑定到onCreate/onDestroy生命周期方法的单个实例,并将聚合的可处置材料视为在onDestroyView中调用Clear的片段视图的一部分。

 类似资料:
  • 问题内容: 什么时候 叫?我有一个活动,需要在调用onMeasure之后执行一项操作。 我的问题与此处未回答的问题相同。在查看文档指出onMeasure当被称为requestLayout()被调用时,它显然是对自身视图调用时它认为是不能再目前的范围内配合。 但是,这不能告诉我何时我的活动可以假设我的视图已被测量。我已使用此代码将ImageView扩展为TouchImageView。建议在这里使用o

  • 在什么情况下会调用applicationWillTerminate?例如,如果代码中出现崩溃,是否会调用它? 苹果的doc对此语焉不详,它只说当系统出于某种原因需要终止它的时候。 对于不支持后台执行或针对iOS3.x或更早版本链接的应用程序,当用户退出应用程序时,总是调用此方法。对于支持后台执行的app,用户退出app时一般不会调用此方法,因为在那种情况下app只是移动到后台。但在app在后台运行

  • ViewModels是独立于activity/片段生命周期还是仅仅独立于其配置更改。它们何时将不再存在,随后的onCleared()方法将被调用。viewModel可以与另一个activity共享吗? 一种情况: 这种分享是否可能,是否是一种好的做法。 此外,由于应用程序生命周期回调,onpause->onstop->ondestroy对这两个程序都是相同的 1.activity旋转和 2.act

  • Q1。我的理解是。但是超时场景呢? Q2。在哪里检查完整未来的默认超时设置?如何更改它?未来超时后会发生什么?(完成还是异常?) Q3。只要未来“完成”(完成或超时或任何最后阶段),我就需要。是否有保证在未来“完成”后调用的方法?我应该把放在哪里? 从新到完整的未来。更喜欢用Java8回答。谢谢你的帮助。

  • 当我在控制台(groovy 2.1.3)中运行以下代码时: 我得到: 谁能告诉我我做错了什么?

  • 本文向大家介绍浅析javascript的间隔调用和延时调用,包括了浅析javascript的间隔调用和延时调用的使用技巧和注意事项,需要的朋友参考一下 用 setInterval方法可以以指定的间隔实现循环调用函数,直到clearInterval方法取消循环 用clearInterval方法取消循环时,必须将setInterval方法的调用赋值给一个变量,然后clearInterval方法引用该变