房间和 RX Java

Room and RX Java

我有一个提交数据 sheet 的方法。

private void saveItemsToDB(List<NewsEntity> newsEntityList) {
     Disposable disposable = Completable.fromCallable((Callable<Void>) () -> {
            newsDatabase.getNewsDao().deleteAll();
            Utils.log("******Delete All******");
           
            for (NewsEntity newsEntity : newsEntityList) {
                Utils.log("******Save " + newsEntity + "******");
                newsDatabase.getNewsDao().insert(newsEntity);
            }
            return null;
        })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe();
        compositeDisposable.add(disposable);
    }

我需要将它们保存到数据库中。我和房间一起工作。有一个方法

  @Insert(onConflict = OnConflictStrategy.REPLACE)
  void insertAll(NewsEntity... newsEntities);
  
  @Insert(onConflict = OnConflictStrategy.REPLACE)
  void insert(NewsEntity newsEntity);

没有保存发生Link

根据 RxJava2 文档,不允许通过 rx 链传递 null。我想,这就是问题的原因。

Completable.fromCallable((Callable<Void>) () -> {
    ...
    return null; // don't do this
})

如果您不想return任何东西,请使用Completable.fromAction()