【发布时间】:2018-11-06 03:29:37
【问题描述】:
我有 ViewPager,它包含 2 个不同的片段。在这两个片段中,我都尝试使用addValueEventListener 查询firebase 数据库。这是参考 -
public static DatabaseReference getDatabase() {
if (mDatabase == null) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
mDatabase = FirebaseDatabase.getInstance().getReference();
}
return mDatabase;
}
在第一个 Fragment 有大约 500 多个项目(加载大约需要 8 秒),第二个有大约 20-30 个。问题是第二个片段总是等待第一个片段完成,然后再查询第二个片段。有没有办法让我分开或做点什么?我真的需要第二个Fragment 来更快地加载。提前致谢。
【问题讨论】:
-
真的需要一次性查询500+条吗?作为用户,我会因为必须等待那么长时间才能加载项目而感到沮丧 - 你应该考虑某种分页。
-
@MarkKeen 我相信 firebase 不支持分页,关于如何处理它的任何想法/来源?
-
使用
Query,您可以使用startAt、endAt、limitToFirst()、limitToLast()等。做完整列表应该不难 - firebase.google.com/docs/reference/android/com/google/firebase/… - 我会尝试谷歌搜索,因为我确信这个问题已经解决了很多次。 -
据我所知,Firebase 调用是异步的。
-
我认为这是一个糟糕的实现,您使用
Handler来进行延迟。我正在尝试写一个答案。但是,答案可能无法直接解决您的问题,但我会尝试建议您如何考虑设计整个 Firebase 调用。
标签: android firebase android-fragments asynchronous firebase-realtime-database