首页 > 解决方案 > 实时数据和房间查询

问题描述

我正在使用 Room 数据库和实时数据。我对 ui 相关数据没有任何问题,因为我正在通过视图模型从活动中观察到数据库查询。但是我需要来自 db 的 viewmodel 中的一些数据(不在活动中),我不能在那里使用它,因为 livedata 在没有观察的情况下无法工作。如果我尝试在没有来自 db 的 Livedata 的情况下获取此数据,我会在 ui 线程错误中让您无法从 db 获取数据。我该如何解决?

Ps:我正在通过存储库访问数据库。

我的道:

@Query("SELECT * from loggedUser limit 1")
LiveData<LoggedUser> getLoggedUser();

存储库:

public LiveData<LoggedUser> executeGetLoggedUser() {
    return userDao.getLoggedUser();
}

视图模型:

    private MediatorLiveData<LoggedUser> loggedUser = new MediatorLiveData<>();
    final LiveData<LoggedUser> tt = ribonyRepository.executeGetLoggedUser();
    loggedUser.addSource(tt, new Observer<LoggedUser>() {
        @Override
        public void onChanged(@Nullable LoggedUser loggedUser) {
             //No data is coming to here
        }
    });

标签: javaandroidmvvm

解决方案


推荐阅读