Проблема с использованием комнаты с rxjava

Я новичок в 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);

}

Итак, есть ли разница между приведенными выше кодами? Какой из них лучше?

0
0
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Рум поддерживает 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);

    }
}

Другие вопросы по теме