Я пытаюсь преобразовать Flowable в LiveData с помощью Reactive Streams. Просмотрел кучу статей, но до сих пор не понял концепции обработки состояний ошибок. В настоящее время я нахожусь на начальном этапе изучения RxJava. Было бы очень полезно, если бы кто-нибудь мог предоставить мне подробное объяснение того, как я должен справиться с этой проблемой.
Repository.java
public class Repository {
private static final String API_KEY = "";
private static final String TAG = "Repository class- ";
private MovieService _movieApi;
private MediatorLiveData<MovieJsonData> _movieList;
private static Repository _repositoryInstance;
public static Repository getInstance(){
if(_repositoryInstance == null){
return new Repository();
}
return _repositoryInstance;
}
private Repository(){
_movieApi = MovieClient.getTrendingMovieClient().create(MovieService.class);
_movieList = new MediatorLiveData<>();
}
public MediatorLiveData<MovieJsonData> fetchData(){
LiveData<MovieJsonData> _source = LiveDataReactiveStreams.fromPublisher(
_movieApi.getTrendingMovies(API_KEY)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(error -> Log.d(TAG, "fetchData: " + error.getMessage()))
);
_movieList.addSource(_source, new Observer<MovieJsonData>() {
@Override
public void onChanged(MovieJsonData movieJsonData) {
_movieList.setValue(movieJsonData);
}
});
return _movieList;
}}
Трассировка стека ошибок:
D/Repository class-: fetchData: timeout
W/System.err:io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to
the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to
begin with.
Caused by: java.lang.RuntimeException: LiveData does not handle errors. Errors from publishers should
be handled upstream and propagated as state