Библиотека подкачки Android + Firestore аварийно завершает работу с IllegalStateException - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь реализовать новую библиотеку подкачки Android, используя Firestore в качестве моего бэкэнда.Я создал класс MyDataSource, который расширяет PageKeyedDataSource<Integer, MyObject>, где я реализую три функции:

  • loadInitial
  • loadBefore
  • loadAfter

Например, одна из функций такова:

@Override
public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull final LoadInitialCallback<Integer, MyObject> callback) {
    query.addSnapshotListener((snapshots, exception) -> {
        if (exception != null) return;

        List<MyObject> list = new ArrayList<>();
        for(DocumentSnapshot document : snapshots.getDocuments()){
            list.add(document.toObject(MyObject.class));
        }
        callback.onResult(list, null, 1); //Error
    });
}

Все работает нормально до тех пор, пока что-то в базе данных не изменится, не будет вызван слушатель и приложение завершится с:

java.lang.IllegalStateException: callback.onResult уже вызван, не может вызвать снова.

Я пытался использовать get(), и он работал нормально.Мои требования для получения обновлений в реальном времени.

Как избежать этой ошибки?

1 Ответ

0 голосов
/ 13 февраля 2019

К сожалению, вы не можете одновременно получать обновления в реальном времени и пейджинг.Вы должны выбрать один или другой.Это ограничение библиотеки подкачки, которой необходимо внутренне управлять страницами результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...