为什么blockingSingle崩溃但blockingFirst有效

eri*_*icn 0 android rx-java rx-java2

我只是从应用程序的共享首选项中读取一个值,因此应该只发出1个值。

SharedPrefAsync:

Observable<Boolean> getSomeValue() {
  // retrieve the value asycnhronously
}
Run Code Online (Sandbox Code Playgroud)

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

我已经阅读了官方文档,但不清楚blockingSingle和之间的区别blockingFirst

如何找出blockingSingle此处使用的实际问题?

aka*_*okd 5

RxJava的“官方文档”是其JavaDocWiki页面。ReactiveX站点是Rx实现的集合,并不是RxJava的最新版本(此外,我们会更频繁地更新文档以更准确地了解概念和行为)。

blockingFirst 如果存在至少一个元素,则采用第一个元素,而忽略其余元素:

首先

blockingSingle期望只包含一项,否则将引发异常:

单身

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