首页 > 解决方案 > 如何从带有房间的外部数据库中读取不断更新的值?

问题描述

我使用带有 Live Data 的空间来访问外部数据库。存储在外部数据库中的值由另一个应用程序每 5 秒更新一次。似乎我无法不断地从房间接收更新的值。我应该重建数据库以每 5 秒更新一次值吗?

以下是一些参考代码:

@Dao public interface GasDynamicDao {

@Query("Select * from gas_dyamic")
LiveData<List<GasDynamicEntity>> getAllInformation();

@Query("Select * from gas_dyamic")
List<GasDynamicEntity> getAllInformationSync();

@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(List<GasDynamicEntity> products);

@Query("Select * from gas_dyamic where Device_ID = :deviceID")
LiveData<GasDynamicEntity> loadGas(String deviceID);
@Query("Select * from gas_dyamic where Device_ID = :deviceID")
GasDynamicEntity loadGasSync(String deviceID);

}

public static GasDatabase buildDatabase(final Context appContext, final AppExecutors executors) {
    return Room.databaseBuilder(appContext, GasDatabase.class,
            DATABASE_FULL_PATH).allowMainThreadQueries().build();
}

标签: androiddatabaseandroid-roomandroid-livedata

解决方案


我通过轮询数据库来解决问题。但是数据库不需要从房间重新创建或重新加载。LiveData 将通过 Dao 方法重新查询数据库再次发生变化。


推荐阅读