我是学习android architecture components的新手,几天来我一直坚持这个问题。
我使用LiveDataReactiveStreams转换Livedata和Flowable,除了处理RxJava的onError外,所有这些都运行良好。
livedata = LiveDataReactiveStreams.fromPublisher(
// bookRepository.getAll() return a Flowable
bookRepository.getAll().map {
val allBookNames = mutableListOf<String>()
it.forEach {
allBookNames.add(it.name)
}
return@map allBookNames.toList()
}
)
我看到了How to handle error states with LiveData? ,并且发现我可以
将我的数据包装成处理我的错误
或使用MediatorLiveData作为@ Nikola Despotoski表示,但还有一个问题是Flowable onComplete()永远不会被调用。
有没有更好的方法来解决这个问题,或者我忽略了这两个解决方案的任何细节?
答案 0 :(得分:0)
LiveDataReactiveStreams.fromPublisher(
Observable.just(1,2)
.map { LiveDataResult(it, null) }
.onErrorReturn {
it.printStackTrace()
LiveDataResult(null, it)
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.toFlowable(BackpressureStrategy.MISSING)
class LiveDataResult<T>(val data: T?, val error: Throwable?)
然后在inUI中您可以处理结果或错误