MVVM 中的存储库与内容提供者

Repository vs Content Providers in MVVM

在Google推荐的架构https://developer.android.com/jetpack/docs/guide中,他们使用Repository从不同的数据源查询数据。我很乐意更好地理解以下几点:

  1. MVVM中是否使用Repository代替Content Provider?

  2. 如果不是,Content Provider 在 MVVM 模式中处于什么位置?

  3. 最重要的是,在这种情况下,Content Provider 和 Repository 之间的主要区别是什么?

感谢您的回答

where would Content Providers sit in the MVVM pattern?

我可以提倡 ContentProviders 可以与 Repository 位于同一级别。为什么?

顾名思义,内容提供者执行一系列操作来向应用程序提供数据,并使其可供其他人在应用程序环境之外使用。所以是的,您可以将其视为数据提供者,就像 Repository 处理数据源一样。


what are the main differences between Content Providers and Repository in this case?

内容提供者和存储库之间的简单区别是,

内容提供者是由 android 框架提供的 class 以满足用例直接与 android 框架交互。 (即可以从设备获取联系人)

说到 Repository,class 创建它是为了处理 MVVM 架构中考虑的数据源交互。 (即它可以请求本地数据库获取数据或服务器端点获取与您的业务层逻辑相关的数据)

1. MVVM中是否使用Repository代替Content Provider?

不,存储库并没有取代内容提供者,它们是不同的东西。

2。如果不是,Content Provider 在 MVVM 模式中处于什么位置?

创建数据源 class,它将处理您与内容提供商的所有通信。此数据源 class 可以传递到您的存储库。

3。最重要的是,在这种情况下,Content Provider 和 Repository 之间的主要区别是什么?

存储库将是我们创建的 class 以提供来自不同数据源的数据。 内容提供者是 android 框架(如 activity)的一部分,它允许我们在不同的应用程序之间共享数据。

在图中您可以看到我们已经创建了一个数据源 class 用于与内容提供者通信。同样,我们为远程 api 调用创建了另一个数据源。这两个数据源都将直接与我们的存储库 class 通信,后者将作为单一数据源。

您可以在此 link 中找到示例实现,其中显示了获取联系人