如何从Rx Java中的Single可观察值返回值
fun fetchRunResult() : Single<Boolean>{
return Single.just(false)
}
fun canRun() : Boolean {
return person.fetchRunResult() // get boolean instead of Single
}
通过以下方式在反应式世界和非反应式世界之间进行转换:阻止通话或订阅
为什么使用反应式?
将反应类型转换为非反应类型:阻止
fun canRun() : Boolean {
return person.fetchRunResult().blockingGet()
}
使用此方法,您可以阻塞调用线程,直到可用值为止。
阻塞调用线程有什么问题?
我应该在反应型和非反应型之间转换吗?
我建议仅谨慎使用它。您可能已经知道源已同步,或者现在您已经知道一个值已经可用。因此,#blockingGet不会阻止调用线程
当源异步时,有什么替代方法?
对流进行建模,并在生命周期处理容器中使用#subscribe。例如,活动提供生命周期方法。使用订阅时,将不会阻止调用/订阅线程。每当有新值可用时,您都会得到一个回调。这里唯一要注意的是像Disposable中那样清理资源,因为不这样做可能会导致反应型泄漏。
摘要: