首页 > 解决方案 > rxjava 使用房间时遇到问题

问题描述

我是 RxJava 的新手,我想知道将 RxJava 与 android room 集成的最佳方法是什么。我已经看到了两种方法:

1.

@Dao
interface UserDao{

@Insert
void insert(User user);

}


class Repository {

public Completable <Boolean> insertUser(final User user) {
    return Completable.fromCallable(new Callable<Boolean>() {
        @Override
        public Boolean call() throws Exception {
            mAppDatabase.userDao().insert(user);
            return true;
        }
    });
}

}

2.

@Dao
interface UserDao{

@Insert
Completable insert(User user);

}

那么上述代码之间有什么区别吗?哪个是更好的方法?

标签: androidrx-java2android-room

解决方案


Room 支持 RxJava2。您可能需要添加依赖项android.arch.persistence.room:rxjava2:$version

此外,从 Room 2.1.0-alpha01 开始,使用 @Insert、@Delete 或 @Update 注释的 DAO 方法支持 Rx 返回类型 Completable。

我建议您查看以下文章,您可以在其中找到详细说明 - Room RxJava

结果,您的 DAO 将如下所示,并且无需在存储库中转换为 rx 类型:

@Dao
interface UserDao{
    @Insert
    Completable insert(User user);

    }
}

推荐阅读