我有一个查询,当满足某些条件时会返回布尔值值。该值用于适配器和服务中和其他类。 Aysnc 任务没有返回类型。因此,如何对数据库进行适当的查询并获得结果。我还制作了 repository 类,并尽可能使用它。
在这里有一种情况,根据Google架构,您应该不在主 线程上使用查询准则
如果更改该值,我不希望该值触发任何其他功能。我只想在需要时查询它,然后将结果传递给方法。
我面临的下一个问题是我不能 呼叫视图模型,其中存在任何方法 服务和适配器。我想使用服务 插入数据或删除数据,并且还想使用适配器中使用的条件来更新 列表。
我正在尝试浏览会议室数据库。因此,请指导我取得最佳结果。
答案 0 :(得分:0)
此处是有关Room Rx方法的文章 https://medium.com/androiddevelopers/room-rxjava-acb0cd4f3757
关键是要不返回对象,而是要从Room返回Observable(也许在此示例中)
@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) {
.....
}