【问题标题】:How to detect database changes in Android Room SQLite local database如何检测 Android Room SQLite 本地数据库中的数据库更改
【发布时间】:2020-04-20 14:11:48
【问题描述】:

我当前的 Android 应用程序使用 Room 来管理其本地 SQLIte 数据库。

一组特定的相关表(父子表)控制我的应用程序其余部分中显示的数据。

当用户对父表和/或子表进行任何更改时,我需要通过 RESTful API 调用将这些更改推送到我的远程服务器。

屏幕流程如下:-

Main Menu Activity -> Parent Data Activity -> (Multiple Children Activities)

我只希望在用户退出父数据活动回到主菜单时推送更改。

我需要检测父表或任何子表上的任何列何时发生更改。

当用户刚刚查看数据并且没有进行任何更改时,我想忽略

我还想忽略用户更改了值然后将其更改回其原始值的情况。

SQLite 是否有任何内置机制来检测“真实”表行/列的变化?

或者是我唯一的解决方案来缓存所涉及的所有表中的 Before 行,并在用户退出我的 Parent Data Activity 时将这些行与 After 行进行比较?

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    您可以考虑将LiveData 与 Room 结合使用。这至少会给你价值的通知。允许您编写有关何时发送到远程服务器的逻辑。

    虽然这并不能解决改变和改变的情况。 https://developer.android.com/topic/libraries/architecture/livedata#use_livedata_with_room

    【讨论】:

    • LiveData 会给我任何变化,我需要检测“真实”变化
    • 在应用的 i/o 层中使用 LiveData 是个坏主意。 LiveData 的目的是仅在 UI 层中使用。应该考虑使用 Rx/Coroutines/Flow。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    相关资源
    最近更新 更多