Я новичок в RxJava, и мне интересно, как лучше всего интегрировать RxJava с комнатой Android. Я видел два способа сделать это:
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);
}
Итак, есть ли разница между приведенными выше кодами? Какой из них лучше?
Рум поддерживает RxJava2. Вероятно, вам потребуется добавить зависимость android.arch.persistence.room:rxjava2:$version.
Кроме того, начиная с Room 2.1.0-alpha01, методы DAO, аннотированные с помощью @Insert, @Delete или @Update, поддерживают возвращаемые типы Rx Completable.
Рекомендую вам ознакомиться со следующей статьей, где вы найдете подробную инструкцию - Комната ? RxJava.
В результате ваш DAO будет выглядеть следующим образом, и не будет необходимости преобразовывать его в тип rx внутри репозитория:
@Dao
interface UserDao{
@Insert
Completable insert(User user);
}
}