使用android中的房间获取表中的更改

问题描述 投票:0回答:1

我正在使用Room从表中加载数据并将其显示在android应用程序中。

但是该表中的行数很大,所以当表更改和更新RecyclerView时,我无法使用LiveData自动触发

我当前正在做的是,当我的应用程序中的某个位置进行了更改(插入删除更新)时,存储库会保留所有所做更改的列表,当我返回显示这些更改的屏幕时,viewmodel会将行ID与已加载的行ID进行比较,并根据需要更新ui。

有更好的方法吗?例如使用LiveData查询,其中将包含所有已更改ID的列表?

android android-room
1个回答
0
投票

您应该将LiveData与ViewModel一起使用,而不是手动跟踪存储库的所有更改并更新UI。

是什么使您认为由于数据库表太大而无法使用LiveData?您尝试时遇到某种错误吗?

使用LiveData时,您无需编写查询来跟踪已更改哪些ID。所有这些操作均由LiveData在后台线程上完成,并且当观察到的任何数据发生更改时,都会通过onChanged()方法通知LiveData的观察者。

我发现本教程结合使用LiveData和Room数据库非常有用:https://medium.com/mindorks/using-room-database-with-livedata-android-jetpack-cbf89b677b47

© www.soinside.com 2019 - 2024. All rights reserved.