Android room rxjava多次调用onNext,即使没有数据库更改

Android room rxjava多次调用onNext,即使没有数据库更改,android,rx-java2,android-room,Android,Rx Java2,Android Room,我有一个使用Room with RXJava的项目,因为我需要听到银行的变化并在屏幕上实时反映出来 当我打开需要这些数据的屏幕时,它订阅了这个查询,数据正确地到达了屏幕上,但是当放置一个括号点并进行调试时,我可以看到onNext被多次调用,即使没有数据库更改,也不会停止 是否有人知道此行为是否可以更改,是否希望仅在数据库发生更改时调用onNext @Dao public abstract class CarDao { @Query("SELECT * FROM cars ")

我有一个使用Room with RXJava的项目,因为我需要听到银行的变化并在屏幕上实时反映出来

当我打开需要这些数据的屏幕时,它订阅了这个查询,数据正确地到达了屏幕上,但是当放置一个括号点并进行调试时,我可以看到onNext被多次调用,即使没有数据库更改,也不会停止

是否有人知道此行为是否可以更改,是否希望仅在数据库发生更改时调用onNext

@Dao
public abstract class CarDao {   
    @Query("SELECT * FROM cars ")
    public abstract Observable<List<Car>> fetchCars();
}
@Dao
公共抽象类CarDao{
@查询(“从车辆中选择*)
公共抽象的可观察的汽车();
}
看法

public MyActivity扩展活动{
........
公共汽车{
carDAO.fetchCars()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(新观察员){
@凌驾
公开无效订阅(一次性d){}
@凌驾
公共交通工具(列出车辆){
**Log.d(“应用程序”、“MyActivity-carDAO.getCar-onNext”)**
}
@凌驾
公共无效者(可抛弃者){}
@凌驾
公共void onComplete(){}
});    
}
}

您在哪里调用
fetchCars()
方法?每当您第一次订阅时,carDAO.fetchCars()将根据查询发出数据库中存在的所有数据,之后,它将侦听更改。即使调用正确(这些多次调用可能是一些与房间无关的错误),我怀疑您是否能够在不使用LiveData的情况下接收更改。
public MyActivity extends Activity {
    ........
    public void fetchCars(){
       carDAO.fetchCars()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<List<Car>>() {
                    @Override
                    public void onSubscribe(Disposable d) {}

                    @Override
                    public void onNext(List<Car> Cars) {
                       **Log.d("app", "MyActivity - carDAO.getCar - onNext ")**
                    }

                    @Override
                    public void onError(Throwable t) {}

                    @Override
                    public void onComplete() {}
                });    
        }
}