Android 从livedata对象获取房间外数据库的数据

Android 从livedata对象获取房间外数据库的数据,android,android-room,android-livedata,Android,Android Room,Android Livedata,你好 我需要一些关于LiveData和Room数据库的帮助。我的想法是,我希望允许用户通过单击按钮备份房间数据库的内容,然后将数据库的内容保存为JSON文件 我的问题如下: 我想在用户单击按钮备份数据库时从数据库中取出数据。我的应用程序的结构如下: 刀 存储库 视图模型 通常我要做的是观察片段上的LiveData,然后任何更改都会从LiveData对象获取数据。事实上,数据并没有改变 那么,当用户单击按钮时,如何从Livedata对象中获取数据呢?这可能有点晚,但您可以为同一数据集创建多种查询方

你好

我需要一些关于LiveData和Room数据库的帮助。我的想法是,我希望允许用户通过单击按钮备份房间数据库的内容,然后将数据库的内容保存为JSON文件

我的问题如下:

我想在用户单击按钮备份数据库时从数据库中取出数据。我的应用程序的结构如下:

存储库

视图模型

通常我要做的是观察片段上的LiveData,然后任何更改都会从LiveData对象获取数据。事实上,数据并没有改变


那么,当用户单击按钮时,如何从Livedata对象中获取数据呢?

这可能有点晚,但您可以为同一数据集创建多种查询方法

例如,我有两个方法获取相同的数据,一个返回LiveData对象,另一个返回列表,如下所示:

@Query("SELECT * FROM media")
LiveData<List<Media>> getLiveAll();

@Query("SELECT * FROM media")
List<Media> getAll();

改变LiveData-getAll;列出getAll;这不是最理想的解决方案,难道没有更好的方法不必删除LiveData就可以做到这一点吗?那么您需要观察备份数据的更改吗?不,我不需要,我只是觉得这是一种避免LiveData的肮脏方式如果不必:
private final MediaDao mMediaDao;
public LiveData<List<Media>> getListOfMedia() {
    return mMediaDao.getAll();
}
public LiveData<List<Media>> getMedia() {
    return mMediaRepository.getListOfMedia();
}
@Query("SELECT * FROM media")
LiveData<List<Media>> getLiveAll();

@Query("SELECT * FROM media")
List<Media> getAll();