如何查询房间数据库并根据需要立即获得结果?



我有一个查询,当满足某些条件时返回布尔值。此值也用于适配器服务和其他Aysnc任务没有返回类型。那么我怎样才能对数据库进行适当的查询并获得结果. 我还制作了存储库类,如果可能的话,我想使用它.

这里有一个条件,您不应该按照谷歌架构指南在线程上使用查询

如果值更改,我不希望此值触发任何其他函数.我只想随时查询它并将结果提供给该方法.

我面临的下一个问题是无法服务和适配器中的任何方法调用视图模型。我想在使用服务的应用程序在后台插入数据或删除数据,并且还想使用适配器中使用的条件更新列表

我正在尝试探索房间数据库。所以引导我达到最好的结果。

这是一篇关于房间 Rx 方法的文章 https://medium.com/androiddevelopers/room-rxjava-acb0cd4f3757

关键是不是从房间返回一个对象,而是可观察的(也许在这个例子中(

@Query(“SELECT * FROM Users WHERE id = :userId”)
Maybe<User> getUserById(String userId);

然后,您可以在单独的线程中获取数据,而无需使用任何AsynTask。

mDatabase.userDao()
.getUserById(USER.getId())
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user -> doSomethigWithUser(user));

private void doSomethigWithUser(User user) {
.....
}

最新更新