如何在 Android 上使用 ROOM 和 Retrofit?

How to use ROOM and Retrofit on Android?

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

这里我有两个问题:

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

  2. 这里我有一个关于带 LiveData 的 ROOM 的问题...更准确地说,我需要一些关于如何实现 get 或查询的建议...我开始使用 LiveData,但我如果只实现了一个 getAll 函数就成功了……比如 getAllUsers,对于我只需要特定用户的简单函数,比如 getUserById,我以通常的方式实现,使用 AsyncTask,所以没有 LiveData。我的问题是...没有LiveData 查询很好吗?如果答案是肯定的,我不需要更多的解释,但如果答案是否定的,谁能给我一些建议,告诉我该怎么做?

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

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

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

注意:我不推荐使用 Async Task,因为根据 official documentation 它没有被弃用。