Я использую библиотеку подкачки и комнату, делая свою комнату дБ как единственный слой правдивости моего приложения.Когда выборка выполняется с сервера с использованием модернизации, я сохраняю результат локально в БД, затем я получаю данные из БД, используя библиотеку подкачки.Я использую BoundaryCallback .
@Override
public void onZeroItemsLoaded() {
requestAndSaveData();
}
@Override
public void onItemAtEndLoaded(@NonNull Photo itemAtEnd) {
requestAndSaveData();
}
private void requestAndSaveData() {
if (isRequestInProgress) return;
isRequestInProgress = true;
apiInterface.getPhotos(lastRequestPage, NETWORK_PAGE_SIZE).enqueue(new Callback<PhotoList>() {
@Override
public void onResponse(Call<PhotoList> call, Response<PhotoList> response) {
if (response.isSuccessful()) {
cache.insertPhotos(response.body().getHits()); //todo only save 20 - 40 items
lastRequestPage++;
isRequestInProgress = false;
Log.i("deb", "number from boundary: " + response.body().getHits().size());
}
}
Когда в БД нет элемента или пользователь переходит к последнему элементу, который я вызываю requestAndSaveData()
метод, которыйполучить данные с сервера и сохранить их в БД.
Мой вопрос заключается в том, как показать индикатор выполнения в нижней части списка при загрузке следующей страницы с сервера и сохранении ее в БД, поскольку это может занять много времени?