Метод запуска RX Java после создания цепочки - PullRequest
0 голосов
/ 23 ноября 2018

Существует метод loadItemsFromNetwork.

private void loadItemsFromNetwork () {

    showProgress ();

    endPoint = RestApi.getInstance (). getEndPoint ();

    Disposable disposable = endPoint.getNews ()
      .map (NewsResponse :: getResults)
      .flatMapIterable ((Function <List <NewsItem>, Iterable <NewsItem >>) newsItemList -> newsItemList)
      .map (NewsTypeConverter :: newsToDatabase)
      .toList ()
      .subscribeOn (Schedulers.io ())
      .observeOn (Schedulers.io ())
      .doOnSuccess (this :: saveItemsToDB)
      .observeOn (AndroidSchedulers.mainThread ())
      .subscribe (this :: updateItems, this :: handleError);

    compositeDisposable.add (disposable);

}

Он работает как надо, но мне нужно, чтобы после его завершения вызывался метод saveItemsToDB.

private void saveItemsToDB (List <NewsEntity> newsEntityList) {
  Utils.log ("*** Save to DB ***");
  Utils.log ("*** Save List Size =" + newsEntityList.size () + "***");
  newsDatabase.getNewsDao (). insertAll (newsEntityList);
}

Как я могу это сделать?Если, например, я добавляю метод saveItemsToDB в цепочку к методу loadItemsFromNetwork, получается интересная вещь.Я получаю лист с 44 элементами, он проходит к адаптеру, затем 44 элемента переносятся в saveItemsFromDB, а затем снова лист с 1 элементом вылетает в адаптер.В итоге у меня на экране появляется 1 элемент https://gist.github.com/industradamus/3d3887f017347a08a89cab28a6bb5971

@Insert (onConflict = OnConflictStrategy.REPLACE)
    void insertAll (List  entities);

это метод DAO

...