Я разработал приложение для Android, где мне нужно получить список с помощью вызова API rest и показать его в моем приложении. Список часто обновляется. Я написал следующий код, используя RxAndroid и модернизацию для вызова API:
private void fetchAllData() {
disposable.add(Observable.interval(0,60,TimeUnit.SECONDS).
subscribeOn(Schedulers.io()).
flatMap(i -> apiService.getData(fetchActiveData)).
observeOn(AndroidSchedulers.mainThread()).
subscribeWith(new DisposableObserver<DataResponse>() {
@Override
public void onNext(DataResponse dataResponse) {
Log.i(TAG, "The rest api was called again");
List<Data> dataList = dataResponse.getData();
displayData(dataList,false);
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "The exception is thrown :: " + e.getMessage());
displayData(null,true);
fetchAllData();
}
@Override
public void onComplete() {
}
})
);
}
Используя приведенный выше код, я могу звонить через каждые 60 секунд и обновлять свой список. Если есть какой-либо новый элемент, который я не отображаю в приложении, то для этого у меня есть логика, чтобы показать уведомление.
Чтобы улучшить свое приложение, мне нужно сделать вызов API, когда приложение закрыто и не работает в фоновом режиме. Может кто-нибудь предложить мне, как мне добиться этого с RxJava.