我正在尝试在我的Android应用中使用LiveData
。我正在使用RoomDatabase
能够在我的片段中自动刷新我的更改。
我第一次运行我的应用时,我从API获取数据,创建我的LiveData
并存储我的数据。
我第二次运行我的应用程序时,我想检查我的DataBase是否为空。但是在使用AppDatabase.getInstance(getContext()).getRecipeDao().getAllRecipes().getValue();
时:以下代码返回null。
f1
我已经读过“如果响应是可观察的数据类型,例如Flowable或LiveData,则会监视查询中引用的所有表的无效”。
如何检查我的RoomDatabase是否有数据或为空?
答案 0 :(得分:7)
因此,在实施自己后,我发现你需要做一些事情:
Observer
LiveData
更改
observeForever(Observer<T> observer)
,否则需要致电LiveCyclerOwner
,然后使用observe (LifecycleOwner owner, Observer<T> observer)
getValue()
:返回当前值。请注意,在a上调用此方法 后台线程不保证最新的值集 接收
重申一下,我认为你的方法不起作用。
您需要创建某种类型的单独检查,而不是使用返回LiveData
类的方法,因为它不能保证通过调用getValue()
来接收最新的值集。
我会推荐一些超级简单的东西,比如在Dao
@Query("SELECT * FROM recipes LIMIT 1")
Recipe getAnyRecipe();
并执行此检查以查找null
以查看配方表中是否存在任何内容。