在不使用Room的情况下使用LiveData和ViewModel

时间:2018-05-27 09:57:19

标签: android android-architecture-components android-livedata android-viewmodel android-mvvm

对于Android MVVM架构,在我看到的所有示例中,人们使用Room来存储/检索数据,或者他们通过Repository类直接从API调用获取数据。

我既没有进行API调用,也没有使用Room数据库来存储数据。但我需要我的ViewModel从存储库中获取数据并将其传递给我的Actvity。

您的Repository类是否可以从Application类继承,以便在您不打算使用Room在本地保存数据时保存静态变量/伴随对象?

处理这种情况的好方法是什么?

1 个答案:

答案 0 :(得分:2)

通常,在软件工程中,存储库用于从应用程序的其余部分(通常直接是业务层)抽象数据层(数据库,Web服务),一个很好的例子是预订网站的这种模式: / p>

Repository style

它通过发布/订阅异步连接接收更新,并将它们发送到其他组件。因此组件彼此独立 因此,Repository只是一个简单的中介类,用于使应用程序更加模块化,以便您可以更轻松地交换部分,并确保应用程序的其余部分不会烦恼数据库连接或HTTP调用等等上。从技术上讲,您可以从Application(或其他任何东西)继承并使用它来保存静态变量等等。

正如here所解释的那样:

  

应用程序对象不能保证永远留在内存中,它会被杀死。与流行的看法相反,该应用程序将不会从头开始重新启动。 Android将创建一个新的Application对象并启动用户之前的活动,以便首先假定该应用程序从未被杀死。

因此,完全取决于您,您可以根据需要使用存储库样式,它根本不与Room或其他任何内容相关联。