为什么blockingSingle崩溃但阻止第一个工作

时间:2018-01-30 09:32:20

标签: android rx-java rx-java2

我只是从应用的共享偏好中读取一个值,因此应该只有1个值发出。

SharedPrefAsync:

Observable<Boolean> getSomeValue() {
  // retrieve the value asycnhronously
}

用法:
sharedPrefsAsync.getSomeValue().blockingFirst()有效,但sharedPrefsAsync.getSomeValue().blockingSingle()似乎使应用程序崩溃而没有错误日志

我已阅读the official documentation,但我不清楚blockingSingleblockingFirst之间的差异。

如何在此处找出使用blockingSingle的实际错误?

1 个答案:

答案 0 :(得分:4)

RxJava的“官方文档”是其JavaDocWiki页面。 ReactiveX站点是Rx实现的集合,并不像RxJava那样是最新的(另外,我们更频繁地更新文档以更精确地概念和行为)。

如果至少有一个元素,则

blockingFirst获取第一个元素并忽略其余元素:

blockingFirst

blockingSingle只需要一个项目,否则会引发异常:

blockingSingle

因此,仔细检查您的getSomeValue()链,它必须发出多个值