Текучий не излучает при изменении базы данных
В базе данных комнат у меня есть объект (пользователь) с идентификатором "1", и мой DAO возвращает Flowable этого объекта. После подписки я вызываю функцию editUser().
@Query ("SELECT * FROM User Where id=:id ")
Flowable<User> getUser(String id);
@Update
void update(User user);
Я не получаю никакого обратного вызова (onNext или onComplete) всякий раз, когда я изменяю этот объект User и обновляю его в БД.
public void editUser() {
User u = new User();
u.id="1";
u.age=45;
appDB.userModel().update(u);
}
appDB.userModel().getUser("1").subscribe(new Subscriber<User>() {
@Override
public void onSubscribe(Subscription s) {
Log.d(TAG,"onSubscribed");
}
@Override
public void onNext(User user) {
Log.d(TAG,"onNext");
}
@Override
public void onError(Throwable t) {
Log.d(TAG,"Error");
}
@Override
public void onComplete() {
Log.d(TAG,"onComplete");
}
});
Может ли кто-нибудь объяснить мне, что мне здесь не хватает?
1 ответ
Решение
Запрос от Subscription
!
appDB.userModel().getUser("1").subscribe(new Subscriber<User>() {
@Override
public void onSubscribe(Subscription s) {
Log.d(TAG,"onSubscribed");
// ------------------------------------------------------------------------
s.request(Long.MAX_VALUE);
// ------------------------------------------------------------------------
}
@Override
public void onNext(User user) {
Log.d(TAG,"onNext");
}
@Override
public void onError(Throwable t) {
Log.d(TAG,"Error");
}
@Override
public void onComplete() {
Log.d(TAG,"onComplete");
}
});