【问题标题】:How to represent Observable.empty() with LiveData in Android?如何在 Android 中用 LiveData 表示 Observable.empty()?
【发布时间】:2020-10-01 12:33:25
【问题描述】:

Rx 有Observable.empty(),表示不会通知任何内容。

Android 架构组件 LiveData 中是否有等效的类(或其他东西)?

【问题讨论】:

    标签: android android-livedata android-jetpack reactivex


    【解决方案1】:

    您将始终在观察时获得当前设置的值。

    因此,最好的办法是处理 null 值,或者使用 LiveData<Optional<T>>(或者,在 Kotlin 中,LiveData<T?>)。

    【讨论】:

      【解决方案2】:

      如果你说你想公开一个 LiveData 向调用者表明它永远不会发出值,我认为你没有办法用架构组件来表达它,因为 LiveData 总是可以发出值它的泛型类型。

      您可以在 Java 中使用 LiveData<Void> 或在 Kotlin 中使用 LiveData<Unit> 来表示发出的值没有类型,但我相信它们仍然可以被观察到,并且它的观察者仍然可以被不包含数据的值触发。 LiveData 没有说“我已经完成了,我永远不会再发出任何东西”的概念。 Kotlin Flow 可能更适合这种情况,因为 Flow 可以在没有更多排放的情况下完成。

      【讨论】:

        猜你喜欢
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        相关资源
        最近更新 更多