我在我的应用程序中使用了Android Jet-pack的Room Architecture组件。我实现了Repository类,用于管理服务器和Room数据库中的数据,例如服务器。我正在使用实时数据来获取数据库中存在的所有对象的列表,并且在活动类中附加了一个Observer。一切正常,除了在致电我的服务器之前发生的一件事之外,我想检查房间中是否存在数据,如果房间中是否存在数据,我不想致电服务器以节省资源,但是当我尝试从存储库类中的本地数据库获取数据,它总是返回null我也尝试将观察者附加到它,但是没有用。
public LiveData<List<AllbrandsdataClass>> getAllBrands() {
brandsDao.getallbrands().observeForever(new Observer<List<AllbrandsdataClass>>() {
@Override
public void onChanged(@Nullable final List<AllbrandsdataClass> allbrandsdataClasses) {
final List<AllbrandsdataClass> listofbrandsobjectfromdb = allbrandsdataClasses;
if (listofbrandsobjectfromdb == null) {
Log.d(TAG, "Repository getallbrands number of brands in the DB is: 0");
} else {
// perform the logic to check and than fetch from server
}
return brandsDao.getallbrands();
}
}
}
这是我在接口类中的getAllBrands()
方法,其注释为DAO
@Query("SELECT * FROM AllbrandsdataClass order by timeStamp desc")
LiveData<List<AllbrandsdataClass>> getallbrands();
我想要的是在从服务器中获取数据之前,对本地数据库中的数据执行存储库类中的签入,但是如上所述,当使用实时数据时,我无法做到这一点
答案 0 :(得分:0)
搜索了很长时间之后,我发现了这些资源。 1)有关概念概述,请观看下面的视频。 youtu.be/2rO4r-JOQtA?t=340
2)用于文档访问 https://developer.android.com/reference/android/arch/lifecycle/Transformations 一个简单的例子
getPointAttribute