Я использую библиотеку подкачки и комнату, делая мою комнату db единственным слоем истины моего приложения. когда выборка выполняется с сервера с использованием модернизации, я сохраняю результат локально в базе данных, затем я получаю данные из базы данных с помощью библиотеки подкачки. Я использую 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()
, который извлекает данные с сервера и сохраняет их в базе данных.
Мой вопрос: как показать индикатор выполнения внизу списка при загрузке следующей страницы с сервера и сохранении ее в базе данных, поскольку это может занять много времени?