Я использую модификацию с rxAndroid, пытаюсь получить ответ от сервера, пока сервер не вернет размер списка 0.
getPageAndNext (columns_id), его идентификатор начальной точки принятия на данный момент считается 0 и в следующемВ запросе я передам 9-й идентификатор, чтобы сервер возвращал после 9-го ответа. (10-й, 11-й, ... 15-й ... 19-й)
Observable<List<Feed>> getPageAndNext(int id) {
return apiInterface.postGetFeed(membersIds, id)
.flatMap(feedResponse -> {
if (feedResponse.getData().size() > 0) {
return Observable.just(feedResponse.getData())
.concatWith(getPageAndNext(feedResponse.getData().get(feedResponse.getData().size() - 1).getId()));
}
return Observer::onComplete;
});
}
Здесь на запрос я получаю 10 каналов и вставляюподача в базу данных комнаты методом onNext
getPageAndNext(0)
.subscribeOn(Schedulers.computation())
.subscribe(new DisposableObserver<List<Feed>>() {
@Override
public void onNext(List<Feed> feeds) {
//save to room database
memberDatabaseRepository.insertMemberList(feeds);
}
@Override
public void onError(Throwable e) {
Log.e("jjjj", "error"+e);
}
@Override
public void onComplete() {
Log.d("kkkk","done");
}
});
Теперь я не получаю весь ответ от сервера.Я ищу последние 24 часа, но у меня не было никакого решения.
Примечание. После этого я могу выполнить 76 вызовов API, так и не получив ответа, даже только 76 данных вызовов API, сохраненных в базе данных комнаты.но есть около 630 вызовов API
Ссылки: -
Как сделать рекурсивный наблюдаемый вызов в RxJava?
Как игнорировать ошибкуи продолжить бесконечный поток?
RxJava takeUntil с удалением последнего элемента?
Как сделать несколько запросов с реактивным андроидом и модифицировать