首页 > 解决方案 > 如何在 Android 上使用 ROOM 和 Retrofit?

问题描述

我是这些 android 方面的新手,我开始学习 MVVM 以及如何使用 ROOM 和 Retrofit。

在这里我有两个问题:

  1. 可以对改造请求和 ROOM SQLLite DB 使用相同的 Repository 类吗?我之所以这样问,是因为我想实现一个需要在本地存储一些数据的应用程序,而且我还需要一个服务器来处理它。

  2. 在这里,我有一个关于带有 LiveData 的 ROOM 的问题......更确切地说,我需要一些关于如何实现 get 或查询的建议......我开始使用 LiveData,但我成功地只实现了一个 getAll 函数......像 getAllUsers 和只需要特定用户的简单功能,比如 getUserById,我以通常的方式实现,使用 AsyncTask,所以没有 LiveData。我的问题是......在没有 LiveData 的情况下进行查询很好吗?如果答案是肯定的,我不需要更多的解释,但如果答案是否定的,任何人都可以给我一些关于如何做到这一点的建议吗?

标签: androidretrofitandroid-room

解决方案


1)对于第一个问题,我认为我们应该针对您的存储库问题遵循最佳实践。简单地说,这样做是可以的,但你应该按照我所说的最佳实践来实现它。遵循单一真相原则,您可以使用房间数据库作为唯一的数据源,一旦从数据库中获取数据,您就可以从服务器请求数据并将这些数据附加到本地数据库。因为可能会出现网络故障,所以这里的缓存可以正常工作,并提供更好的用户体验。检查前面提到的官方文档的超链接,也检查这个视频

2) 对我来说,我将 RXJava2 与 Room 数据库一起使用。我相信它工作正常,我将与您分享这 2 篇讨论如何将 RXJava2 与 Room 一起应用的 文章文章 1 文章 2

但您也可以在查询中使用 LiveData。

注意:我不推荐使用 Async Task,因为根据官方文档,它没有被弃用。


推荐阅读