movieDao.getFavorites()
- бесконечный поток. Использование .toList()
в бесконечном потоке не имеет смысла, поскольку .toList()
не излучает, пока не завершится исходный поток.
Есть два варианта:
- Сделайте ваш источник конечным
Сделать movieDao.getFavorites()
вернуть Single<List<MovieEntity>>
вместо Observable<List<MovieEntity>>
или просто поставьте .take(1)
после источника.
mCompositeDisposable.add(movieDao.getFavorites()
.take(1) // This will terminate the stream after it emits first item.
.subscribeOn(Schedulers.io())
...
- Или не использовать
.toList()
.
Сохраняйте свой бесконечный поток и продолжайте слушать изменения в базе данных.
mCompositeDisposable.add(movieDao.getFavorites()
.map(movieEntities -> movieEntities.stream().map(this::getMovie).collect(Collectors.toList()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(list -> {
if (list.isEmpty()) {
mView.showEmptyState(true);
} else {
mView.onMoviesLoaded(list);
}
})
);