21

我一直在使用SingleLiveData可以在这里找到的课程。我的问题是:

  1. SingleLiveData实际上是Android架构组件的一部分吗?

  2. 使用它是个好主意吗?

4

3 回答 3

34

SingleLiveEvent 实际上是 Android 架构组件库的一部分吗?

不,也不会是:https ://issuetracker.google.com/issues/122413110 。基本上,官方的回答是“是的,常规的 livedata 是不够的,所以我们在示例中介绍了它,但是在库中太hacky了”

于 2019-03-16T15:50:59.850 回答
14

查看实时数据及其父/子继承,没有 SingleLiveData 这样的东西。@Raghu 提供的阅读链接,我发现声明:

SingleLiveEvent类是为示例创建的,作为适用于该特定场景的解决方案。它是一个 LiveData,只会发送一次更新。

所以回答你的问题:

SingleLiveData 实际上是 Android 架构组件的一部分吗?

不它不是!

使用它是个好主意吗?

这取决于许多因素。由于我没有使用它,我将给出一般的想法。使用您在演示应用程序或其他方式中找到的类可能无法保证更新或修复错误。因此,如果您非常了解该类,并且可以修复您可能发现的任何错误,并且如果它符合您的需要,那么请使用它。

但通常我会避免这种情况,如果我能找到维护良好并能做同样工作的东西。

因为从浏览文章中我得到的印象是他正在尝试制作某种观察者模式,所以我建议你查看 rxjava

于 2018-08-10T14:27:29.443 回答
0

我将ObservableField用于单个 UI 事件,但它需要一些黑客才能与 Fragments 一起使用来自动订阅/取消订阅。

于 2020-07-13T19:27:34.723 回答