Android 数据库更改时不发出Flowable
在Room数据库中,我有一个id为1的对象用户,我的DAO正在返回该对象的一个可流动数据。订阅后,我调用editUser函数Android 数据库更改时不发出Flowable,android,rx-java2,flowable,Android,Rx Java2,Flowable,在Room数据库中,我有一个id为1的对象用户,我的DAO正在返回该对象的一个可流动数据。订阅后,我调用editUser函数 @Query ("SELECT * FROM User Where id=:id ") Flowable<User> getUser(String id); @Update void update(User user); 每当我更改此用户对象并在DB中更新它时,我不会收到onNext或onComplete的任何回调 public void edi
@Query ("SELECT * FROM User Where id=:id ")
Flowable<User> getUser(String id);
@Update
void update(User user);
每当我更改此用户对象并在DB中更新它时,我不会收到onNext或onComplete的任何回调
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");
}
});
有人能解释一下我在这里遗漏了什么吗?订阅请求
您必须从订阅请求。您是否尝试过Flowable?你也可以尝试像Flowable这样的东西,尽管我认为这需要guava@akarnokd:如果我使用Subscription.OnNext,是否意味着我正在手动请求更新?Subscriber.OnNext是事件的接收者,它不会声明您希望接收的项目的时间和数量。@akarnokd:订阅时有一个被OnNext覆盖。您能告诉我如何/在哪里使用Subscriber.onNext吗。
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");
}
});