【问题标题】:Do we need to call onComplete() of subject in onDestroy() method of activity?我们是否需要在活动的 onDestroy() 方法中调用主题的 onComplete()?
【发布时间】:2019-09-06 03:43:44
【问题描述】:

如果在ActivityA中,它保持引用

private val subjectA: PublishSubject<ObjectB> = PublishSubject.create()
private var dispose: Disposable? = null

是否需要在Activity的onDestroy()方法中调用subject的onComplete()方法

override fun onDestroy() {
    subjectA.onComplete()
    dispose?.dispose()
    super.onDestroy()
}

【问题讨论】:

  • 您到底想达到什么目标?在正常情况下,他们无需在onDestroy 中调用subject 中的onComplete()
  • 如果您要处理它,则不需要。在 CompositeDisposable 中添加 subjectA(您可以对一个班级中的所有主题使用相同的复合一次性)。在 onDestroy 中处理它

标签: android rx-java rx-java2 rx-kotlin2


【解决方案1】:

没有必要(也不应该调用)在Activity/fragment的onDestroy中调用onComplete,因为它用于发出数据传输完成的流,并且当视图被销毁时它是不一样的作为完成。您应该只处置 Disposable,因为 Dispose 是一个不同的用例,并停止任何进一步的基于推送的通知,而不是告诉观察者 onError/onComplete。

来自文档:

通知 Observer Observable 发送完毕 基于推送的通知。

要了解 dispose 和 complete 之间的区别,请参阅以下链接:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多