【发布时间】:2020-10-01 12:33:25
【问题描述】:
Rx 有Observable.empty(),表示不会通知任何内容。
Android 架构组件 LiveData 中是否有等效的类(或其他东西)?
【问题讨论】:
标签: android android-livedata android-jetpack reactivex
Rx 有Observable.empty(),表示不会通知任何内容。
Android 架构组件 LiveData 中是否有等效的类(或其他东西)?
【问题讨论】:
标签: android android-livedata android-jetpack reactivex
您将始终在观察时获得当前设置的值。
因此,最好的办法是处理 null 值,或者使用 LiveData<Optional<T>>(或者,在 Kotlin 中,LiveData<T?>)。
【讨论】:
如果你说你想公开一个 LiveData 向调用者表明它永远不会发出值,我认为你没有办法用架构组件来表达它,因为 LiveData 总是可以发出值它的泛型类型。
您可以在 Java 中使用 LiveData<Void> 或在 Kotlin 中使用 LiveData<Unit> 来表示发出的值没有类型,但我相信它们仍然可以被观察到,并且它的观察者仍然可以被不包含数据的值触发。 LiveData 没有说“我已经完成了,我永远不会再发出任何东西”的概念。 Kotlin Flow 可能更适合这种情况,因为 Flow 可以在没有更多排放的情况下完成。
【讨论】: