从Firebase数据库中检索数据时出现延迟

时间:2017-06-03 09:33:03

标签: java android firebase

这是一款聊天应用。我正在检索要在聊天室recyclerview上显示的消息。为此,我使用FirebaseRecyclerAdapter。我正在检索最新的500条消息。那个聊天室有超过20k的消息..当我加载该活动时,它需要6秒钟来加载所有500条消息。

我追踪了时间。

延迟是在setAdapter和RecyclerAdapter类之间。

我在Firebase数据库中的消息结构

{
  "-KlQc42ici0_PRCBX7-V" : {
    "message" : "message 1",
    "timestamp" : 1496185853436,
    "type" : "action",
    "username" : "berkleef2",
  },
  "-KlQmhcwK96j30FNoSs-" : {
    "message" : "message 2",
    "timestamp" : 1496188640000,
    "type" : "action",
    "username" : "atrickrodney16yahoocomat",
    "zread" : true
  },
  "-KlQmjSoucJD7uaHriOh" : {
    "message" : "message 3",
    "timestamp" : 1496188647083,
    "type" : "text",
    "username" : "atrickrodney16yahoocomat",
    "zread" : true
  }
}

setAdapter之后的延迟

 mNewAdapter = new NewChatRecyclerAdapter(
                    ChatMessageItem.class,
                    R.layout.message_item,
                    RecyclerView.ViewHolder.class, ref.limitToLast(500), Fusername, booIsPrivateChat, chatd, strOpponent);
            messageList.setAdapter(mNewAdapter);

我认为适配器类没有问题。因此,如果问题是加载500条消息。那么在这种情况下我应该怎么做才能加载聊天消息...

3 个答案:

答案 0 :(得分:0)

启用Firebase离线功能集持久性,以便您可以存储消息

答案 1 :(得分:0)

您可以依次以20或50条消息的形式获取它们。

答案 2 :(得分:0)

您可以在数据库引用上使用firebase数据库提供的keepsynced函数。