В настоящее время я работаю над вызовом rest api и отображением данных в интерфейсе пользователя.Я использую rxAndroid и Retrofit.Ниже приведен код:
disposable.add(apiService.getIncidents(1, "true")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(new Function<IncidentResponse, List<Incident>>() {
@Override
public List<Incident> apply(
@io.reactivex.annotations.NonNull final IncidentResponse incidentResponse)
throws Exception {
return incidentResponse.getIncidents();
}
})
.subscribe(new Consumer<List<Incident>>() {
@Override
public void accept(
@io.reactivex.annotations.NonNull final List<Incident> incidents)
throws Exception {
recyclerView.setAdapter(mIncidentAdapter);
displayIncidents(incidents);
}
})
);
Это работает нормально, и я могу получить данные и показать в пользовательском интерфейсе.Теперь, как часть усовершенствования, мне нужно периодически получать эти данные, даже если мое приложение находится в фоновом режиме или уничтожено.Я попробовал следующий код:
disposable.add(((apiService.getIncidents(1, "true")).interval(10,TimeUnit.SECONDS))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(new Function<IncidentResponse, List<Incident>>() {
@Override
public List<Incident> apply(
@io.reactivex.annotations.NonNull final IncidentResponse incidentResponse)
throws Exception {
return incidentResponse.getIncidents();
}
})
.subscribe(new Consumer<List<Incident>>() {
@Override
public void accept(
@io.reactivex.annotations.NonNull final List<Incident> incidents)
throws Exception {
recyclerView.setAdapter(mIncidentAdapter);
displayIncidents(incidents);
}
})
);
Но я получаю ошибку компиляции на карте метода, которая "в Observable не может быть применена".Это правильный подход или это нельзя сделать с помощью RxAndroid?