【问题标题】:How to use ROOM and Retrofit on Android?如何在 Android 上使用 ROOM 和 Retrofit?
【发布时间】:2020-03-07 22:09:27
【问题描述】:

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

这里我有两个问题:

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

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

【问题讨论】:

    标签: android retrofit android-room


    【解决方案1】:

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

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

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

    注意:我不推荐使用异步任务,因为根据official documentation,它没有被弃用。

    【讨论】:

    • 谢谢,你的回答对我帮助很大
    猜你喜欢
    • 2017-04-14
    • 2023-03-15
    • 2021-04-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多