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

Is SingleLiveEvent actually part of the Android Architecture Components Library?

我一直在使用 SingleLiveData class 可以找到 here。我的问题是:

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

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

查看 Live data and its Parent/Children inheritance 没有 SingleLiveData 这样的东西。阅读@Raghu 提供的link,我发现声明:

The SingleLiveEvent class was created for a sample as a solution that worked for that particular scenario. It is a LiveData that will only send an update once.

所以回答你的问题:

Is SingleLiveData is actually part of the Android Architecture Components?

不,不是!

Is it a good idea to use it?

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

但一般来说,如果我能找到维护良好且功能相同的东西,我会避免这种情况。

由于浏览了这篇文章,我得到他正在尝试制作某种观察者模式的印象,我建议您查看 rxjava

Is SingleLiveEvent actually part of the Android Architecture Components Library?

不,也不会是:https://issuetracker.google.com/issues/122413110。 基本上官方的回答是"Yes, regular livedata wasn't enough, so we introduced it in our examples but it's too hacky to be in the library".

我将 ObservableField 用于单个 UI 事件,但它需要一些技巧才能与 Fragments 一起使用以自动 subscribe/unsubscribe。