Android RxView.clicks()在onError事件后死亡
以下是使用RxBindings的Rx链示例:Android RxView.clicks()在onError事件后死亡,android,kotlin,rx-java,rx-java2,rx-binding,Android,Kotlin,Rx Java,Rx Java2,Rx Binding,以下是使用RxBindings的Rx链示例: RxView.clicks(refreshIcon) .flatMap { Observable.error<Throwable>(IllegalArgumentException()) } .subscribe( { Timber.d("onNext")}, { error -> Timber.d("onError") })
RxView.clicks(refreshIcon)
.flatMap { Observable.error<Throwable>(IllegalArgumentException()) }
.subscribe(
{ Timber.d("onNext")},
{ error -> Timber.d("onError") })
.addTo(disposables)
RxView.点击(刷新图标)
.flatMap{Observable.error(IllegalArgumentException())}
.订阅(
{Timber.d(“onNext”)},
{error->Timber.d(“onError”)})
.addTo(一次性用品)
单击一次“我的刷新”图标后,此链将不会在终端事件发生时再次运行。我猜我有一个错误的印象,即每当检测到一个点击事件时,就会进行订阅,而实际上,每当执行该代码块时,就会进行订阅
问题是我如何使我的链在每次点击时执行/重新执行,即使在点击终端事件之后?寻找直观的东西。可观察的必须在第一个错误发生时完成,这是在他们的合同中。为了让您的
可以观察到
在终端事件中幸存下来,您必须深入研究RxJava。似乎很适合你的情况:
RxView.clicks(refreshIcon)
.flatMap { ... }
.retry()
.subscribe(...)
.addTo(disposables)
它是Rx合同的一部分,当发生错误时,流将接收onError事件并终止。
除非如我所怀疑的那样,使用例如:onErrorResumeNext()主动处理错误。如果我使用单子,链不会终止吗?我猜我只是在subscribe()块中处理monad?我为您添加了相关的示例。我还删除了单子的题外话,因为它比帮助更令人困惑。在monad中包装将终止,除非您自己编写一些复杂的运算符。这似乎有效。因此,在观察热源时,“重试”将重新订阅,但将等待下一次发射。很高兴知道这一点。谢谢。既然问题解决了,也许你可以接受这个答案。