Android分页库+ Firestore因IllegalStateException崩溃

时间:2019-02-13 12:48:48

标签: android firebase google-cloud-firestore android-jetpack android-paging

我试图使用Firestore作为后端来实现新的Android分页库。我创建了一个扩展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 :(得分:0)

不幸的是,您不能同时拥有实时更新和分页。您必须选择一个。这是分页库的限制,它需要在内部管理结果页。