这是一款聊天应用。我正在检索要在聊天室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条消息。那么在这种情况下我应该怎么做才能加载聊天消息...
答案 0 :(得分:0)
启用Firebase离线功能集持久性,以便您可以存储消息
答案 1 :(得分:0)
您可以依次以20或50条消息的形式获取它们。
答案 2 :(得分:0)
您可以在数据库引用上使用firebase数据库提供的keepsynced
函数。