添加到CompositeDisposable后RxJava订阅不起作用

时间:2019-07-10 21:48:02

标签: rx-java2

我正在使用RxJava Flowable with Room来监听表中的更改。提到的问题是when the result of subscribe, a disposable, is added to a CompositeDisposable, it immediately unsubscribes

下面是相关代码:

repo.getFlowable(id)
                ?.doOnDispose { Timber.i("Unsubscribed") }
                ?.doOnDispose { Timber.i("Disposed") }
                ?.subscribe({
                    Timber.i("Subscribed")
                }, {
                    Timber.e(it)

                })?.apply {
                    compositeDisposables.add(this)
                }

添加Apply块后,立即even though "compositeDisposables.dispose()" is not called.打印“ Unsubscribed”和“ disposed”

没有apply块,它按预期运行。

这是预期的行为吗?为什么在尚未弃用复合一次性物料时立即取消订阅?

1 个答案:

答案 0 :(得分:0)

如果调用了dayOfWeek,您将无法再执行disposed(),因为它将立即丢弃。

有两种方法可以解决此问题:

  1. 实例化add()并开始添加处置对象。完成后,请致电new CompositeDisposable()。如果要添加更多内容,请再次实例化dispose()
  2. 仅实例化CompositeDispose一次,但使用new CompositeDisposable()代替dispose()。执行此命令后,您将能够继续添加一次性用品,而无需新的clear()