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

在RxJava中处理可完成的、单一的、可能的和终止的可观察的最佳实践

南宫兴德
2023-03-14

我是从Android的角度问这个问题的,但这应该适用于RxJava。

作为一个最佳实践,我的视图是否应该总是处理即使是短期的completablesinglemayble和终止observableRx类型,这些类型应该以短的顺序终止,但在用户关闭视图时仍然可以执行?我知道当Rx链终止时,它会被释放,但这可能发生在视图关闭后的某个时间。

例如,执行HTTP GET的single。调用将完成,但可能是在视图被破坏之后,暂时阻止了垃圾回收。

如果使用compositeDisposable在长寿命视图中收集此类Disposable时,我认为应该注意clear()或以其他方式定期删除这些Disposable以防止compositeDisposable的大小无限增长?

共有1个答案

欧阳俊明
2023-03-14

作为一个最佳实践,我的视图是否应该总是处理即使是短暂的可完成的、单一的、可能的和终止的可观察的Rx类型

如果您与他人共享代码,作为最佳实践,我会说是的,您应该处理。虽然它看起来像是一个额外的锅炉板,但它将阻止下一个开发人员尝试钩入您的订阅代码,并尝试访问可能不再存在的组件(即片段分离后的上下文...等等)。

如果用复合一次性用品来收集这些一次性用品,我认为应该注意定期清除()或以其他方式清除这些一次性用品,以防止复合一次性用品的大小无限制地增长?

  1. 在生命周期开始时创建新的CompositeDisposable(onCreate(...)等)
  2. 注意ondestroy(...)中的dispose(),因为到那时,您的回调实际上没有任何价值,只是占用了资源。
 类似资料:
  • 问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。

  • 我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从

  • 假设我有 我要实现的是一个流,它在doTask()完成后发出一个just(“completed”)项。 对于Observable,我可以执行doTask().map(f->just(“completed”));但是,如果它在完成的过程中没有散发出任何自然的东西,我怎么能做到完全的呢?

  • 我目前在Android和Kotlin上使用RxJava,但我有一个问题,如果不使用toBlocking(),我无法解决。 我在员工服务中有一个方法,它返回一个可观察的 这一切都很好,因为每当员工发生变化时,这个可观察对象就会发出新的员工列表。但是我想从员工那里生成一个PDF文件,这显然不需要每次员工更改时都运行。另外,我想从PDF生成器方法返回一个可完成的对象。我想在PDF中添加一个标题,然后遍历

  • 我正在从事一个涉及Hystrix的项目,我决定使用RxJava。现在,忘记Hystrix的其余部分,因为我相信主要问题是我完全搞砸了正确编写可观察代码。 需要:我需要一种方法来返回一个代表多个可观察对象的可观察对象,每个可观察对象都运行一个用户任务。我希望该可观察对象能够返回任务的所有结果,甚至错误。 问题:可观测流会因错误而消亡。如果我有三个任务,而第二个任务引发了一个异常,那么即使第三个任务成