Search code examples
androidrx-java2flowable

Flowable not emitting when database changes


In Room Database i have an object (User) with id "1" and my DAO is returning a Flowable of this object. After subscribing I call editUser() function.

 @Query ("SELECT * FROM User Where id=:id ")
 Flowable<User> getUser(String id);

 @Update
 void update(User user);

I am not getting any call back (onNext or onComplete) whenever i make a change to this User object and update it in DB.

 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");
  }
});

Could anyone please explain to me what am i missing here ?


Solution

  • Request from the 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");
      }
    });