【发布时间】:2018-07-03 10:19:50
【问题描述】:
因此,在我的 android 项目中,我在存储库层中使用 RxJava,然后将其转换为视图模型中的实时数据,但是当我的流发出错误时出现异常。跟Android Documentation的这句话有关:
来自发布者
LiveData<T>fromPublisher (Publisher<T> publisher)从
ReactiveStreams发布者创建一个 ObservableLiveData流。当
LiveData变为活动状态时,它会订阅来自发布者的排放。当
LiveData变为非活动状态时,订阅将被清除。LiveData保存在LiveData处于活动状态时发布者发出的最后一个值。因此,在热 RxJava Observable 的情况下,当添加新的
LiveDataObserver时,它会自动通知LiveData中保存的最后一个值,这可能不是由出版商。请注意,
LiveData不处理错误,它希望错误被视为所保存数据中的状态。如果发布者发出错误,错误将传播到主线程,应用程序将崩溃。
如何处理流错误? PS:我正在使用 Kotlin 扩展来转换为实时数据
fun <T> Observable<T>.toLiveData(backPressureStrategy: BackpressureStrategy =
BackpressureStrategy.LATEST) : LiveData<T> {
Log.d("RxJava",this.toString())
return LiveDataReactiveStreams.fromPublisher(this.toFlowable(backPressureStrategy))
【问题讨论】:
标签: android rx-java2 rx-android android-architecture-components android-livedata