【问题标题】:Delay While Retrieving Data From Firebase Database从 Firebase 数据库中检索数据时出现延迟
【发布时间】:2017-12-04 23:22:07
【问题描述】:

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

我跟踪了时间。

延迟发生在 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 条消息。那么在这种情况下我应该怎么做才能加载聊天消息...

【问题讨论】:

    标签: java android firebase


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以一个接一个地以 20 或 50 条消息的形式获取它们。

      【讨论】:

      【解决方案3】:

      您可以在您的数据库参考中使用 firebase 数据库提供的 keepsynced 函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        • 2019-04-16
        • 2020-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多