从存储库返回LiveData

lim*_*nal 5 android android-lifecycle android-livedata android-architecture-components

该示例存储库具有一种方法 public LiveData<Resource<List<Repo>>> loadRepos(String owner)

https://github.com/googlesamples/android-architecture-components/blob/master/GithubBrowserSample/app/src/main/java/com/android/example/github/repository/RepoRepository.java

我的问题是为什么要将Android API(即android.arch.lifecycle.LiveData)添加到数据层?

将框架API与您的数据/实体混在一起不是一种反清洁的体系结构吗?

现在也不需要使用Robolectric进行单元测试RepoRepository吗?

小智 3

LiveData 的目的是让观察者知道数据何时准备好以及何时发生变化。当您从存储库返回 LiveData 对象时,您所说的是您将很快(或最终)为调用者获取数据,并且您将继续让调用者了解数据的更改或更新。LiveData在Android架构中的实现非常简单,并且独立于核心Android API。Android 架构类实际上是附加组件,它使 Android 编程变得更容易、更简洁。

因为它独立于 Android 核心,所以您不需要 Roboelectric 来测试它。但是,您需要管理测试线程,因为 LiveData 通常需要使用后台线程来为观察者获取数据。