在使用 Android 架构组件和 Room 时将数据插入外部源/数据库

Posted

技术标签:

【中文标题】在使用 Android 架构组件和 Room 时将数据插入外部源/数据库【英文标题】:Insert data into external source/DB while using Android Architecture Components and Room 【发布时间】:2018-07-03 05:01:11 【问题描述】:

我读到的所有关于具有 Room 和单点真理的 android 架构组件都是关于使用 Room 在本地数据库中缓存数据。我已经浏览了无数的存储库,但似乎都无法解决我的问题:“在使用 ARCH 和 Room 的同时将数据推送到外部源”

当从本地数据库中检索不可用的数据时,它应该从远程源 (API) 中获取数据。到目前为止一切都很好。

但是如何将数据推送到外部源?

1) 当您连接到网络时,我可以想象您只是直接 POST/PUT 到您的 API。 (或者不是?)然后在需要将数据缓存在本地数据库中时获取数据。但是你不是违反了你的单一真理来源吗?

2) 当你没有连接到网络时怎么办?我会说您将数据插入本地数据库。但是,您如何将该数据与外部源同步? (这是必要的,因为不会丢失任何数据。)

如您所见,我不知道如何解决这个问题。而且我不认为我可以是唯一的。

提前感谢您的帮助 =)

【问题讨论】:

【参考方案1】:

我也有同样的问题。我想我会这样做:如果应用程序连接到网络,我会选择你的。 1 并将其直接发布到您的远程源 (DB)。

如果您离线,我会将其插入本地数据库并为其添加一个标志。例如,您可以添加一个已同步的列并将其设置为 false。

一旦您重新连接到互联网,您就可以检查您的表是否包含由标志标记的数据行并将它们发布到远程源。

【讨论】:

以上是关于在使用 Android 架构组件和 Room 时将数据插入外部源/数据库的主要内容,如果未能解决你的问题,请参考以下文章

Android架构组件Room的使用

用 kotlin 学习 Android MVVM 架构组件

Android官方架构组件介绍之LifeCycle

如何在 Activity 中使用 Room 和 LiveData 删除 LiveData<Object>?

Jetpack架构组件库:Room

Jetpack架构组件库:Room