gpt4 book ai didi

android - android-如何通过使用LiveData和RxJava处理错误?

转载 作者:行者123 更新时间:2023-12-02 13:38:29 26 4
gpt4 key购买 nike

我是学习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?并知道我可以
  • 包装我的数据以处理我的错误
  • 或使用@@ Nikola Despotoski所说的MediatorLiveData,但是还有另一个问题是,从不调用Flowable onComplete()。

  • 有没有更好的方法来解决这个问题,或者我忽略的这两个解决方案的任何细节?

    最佳答案

    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中您可以处理结果或错误

    关于android - android-如何通过使用LiveData和RxJava处理错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50595957/

    26 4 0