我正在使用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块,它按预期运行。
这是预期的行为吗?为什么在尚未弃用复合一次性物料时立即取消订阅?
答案 0 :(得分:0)
如果调用了dayOfWeek
,您将无法再执行disposed()
,因为它将立即丢弃。
有两种方法可以解决此问题:
add()
并开始添加处置对象。完成后,请致电new CompositeDisposable()
。如果要添加更多内容,请再次实例化dispose()
。CompositeDispose
一次,但使用new CompositeDisposable()
代替dispose()
。执行此命令后,您将能够继续添加一次性用品,而无需新的clear()