使用分页检索数据
当你拥有庞大的 JSON 数据库时,添加值事件侦听器没有意义。它将返回巨大的 JSON 并解析它将是耗时的。在这种情况下,我们可以使用分页和获取部分数据并显示或处理它。有点像延迟加载或喜欢在用户点击显示旧聊天时获取旧聊天。在这种情况下,可以使用 Query 。
让我们在前面的部分中采用我们的旧示例。用户群包含 3 个用户,如果它增长到 30 万用户,并且你想要批量获取 50 个用户列表:
// class level
final int limit = 50;
int start = 0;
// event level
Query userListQuery = userDBRef.orderByChild("email").limitToFirst(limit)
.startAt(start)
userListQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Do something
start += (limit+1);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Do something about the error
});
这里可以添加和监听值或子事件。再次调用查询以获取下一个 50. 确保添加 orderByChild()
方法,如果没有它,这将无法工作。Firebase 需要知道你进行分页的顺序。