yal*_*tta 6 android dao android-room android-livedata
我正在尝试RoomDatabase在我的Android应用中使用。而且我习惯于LiveData能够自动刷新片段中的更改。
第一次运行我的应用程序时,我是从API中获取数据,创建RoomDatabase并存储数据。
第二次运行我的应用程序时,我想检查数据库是否为空。但是在使用时LiveData,以下代码返回null。
AppDatabase.getInstance(getContext()).getRecipeDao().getAllRecipes().getValue();
Run Code Online (Sandbox Code Playgroud)
我已经读过“如果响应是可观察的数据类型,例如Flowable或LiveData,Room会监视查询中引用的所有表是否无效”。
如何检查我的RoomDatabase是否有数据或为空?
因此,在实现自己之后,我发现您需要做一些事情:
Observer更改LiveDataobserveForever(Observer<T> observer)除非您LiveCyclerOwner使用,否则需要致电,然后将其改为:observe (LifecycleOwner owner, Observer<T> observer)getValue():返回当前值。请注意,在后台线程上调用此方法并不能保证将接收到最新的值集
重申一下,我认为您的方法行不通。
您将需要创建某种类型的单独检查,而不是使用返回LiveData指出的类的方法,因为它不能保证通过调用接收到最新的值集getValue()。
最后,我将建议一些超级简单的操作,例如为您的计算机添加新方法 Dao
@Query("SELECT * FROM recipes LIMIT 1")
Recipe getAnyRecipe();
Run Code Online (Sandbox Code Playgroud)
并执行此检查以查找null食谱表中是否存在任何内容。
| 归档时间: |
|
| 查看次数: |
3291 次 |
| 最近记录: |