conversation.getAllMessages().size()问题

问题描述

在登出账号,重新登录的时候,EMChatManager.getInstance().getAllConversations 得到的convasations,通过for (EMConversation conversation : conversations) ,他的所有conversation.getAllMessages().size()永远为1;而EMChatManager.getInstance().getConversation(username),他的getAllMessages().size()就显示为正确的数字。在loginactivity中已经声明EMGroupManager.getInstance().loadAllGroups();EMChatManager.getInstance().loadAllConversations();为什么2个size会显示的不一样

解决方案

getAllConversations是加载的内存中的会话对象,在sdk初始化的时候,demo有设置加载会话时加载的message条数为1,所以你获取的会话的消息 大小只会为1!还有你说你用第二种方式获取的conversation得到的message的size是正确的,那你这个总共有多少条消息呢,如果有很多条会是全部么?建议看下demo的sdk的初始化部分

时间: 2024-10-06 15:13:51

conversation.getAllMessages().size()问题的相关文章

onEvent回调中有收到消息,但conversation.getAllMessages()中没有收到的消息,怎么回事?

问题描述 onEvent回调中有收到消息,但conversation.getAllMessages()中没有收到的消息,怎么回事? 解决方案 你看下你的会话对象是不是你当前收到消息的对象?

conversation.getAllMessages()获取聊天记录问题

问题描述 List<EMMessage> messages = conversation.getAllMessages();   使用这句获取聊天记录,为什么有时候能得到,有时候获取不到? 解决方案 conversation.getAllMessages()是获取此conversation当前内存所有的message ,登录后调loadAllConversations将会话全加载到内存,再通过会话获取内存里的消息.看一下你都是什么时候获取到,什么时候获取不到,有什么提示和log没.

请问conversation.getAllMessages()

问题描述 Demo中的MessageAdapter中的Handler中有这样一个方法,如图所示.注释中写了不能在UI线程中使用,那么Handler中不也是UI线程吗? 解决方案 handler就不是主线程了,你去看下handler的用法解决方案二:打印了一下  ChatActivity中onCreate() ,handler中的handleMessage,还有hanlder中的refreshList(),都是运行在同一线程的解决方案三:刷新UI必须是在主线程的,这个说的不能直接在UI线程conv

为什么请求的会话列表总是多一行,且第一行是空的

问题描述 还是我请求的有问题. 解决方案 你看下EaseConversationListFragment这个类中的loadConversationList这个方法中,在代码层的 List<Pair<Long, EMConversation>> sortList = new ArrayList<Pair<Long, EMConversation>>(); synchronized (conversations) { for (EMConversation co

聊天记录不完整

问题描述 conversation.getAllMessages().size()得到的数据条数和真实的条数不一样,有时候只有20或者21条 解决方案 这个获取的是当前在内存中的所有消息,你说的不一样和谁不一样?解决方案二:就是比如说第一次进入chatActivity通过conversation.getAllMessages().size()获取的聊天记录是20条,退出ChatActivity后再次进入ChatActivity通过conversation.getAllMessages().siz

接收消息后怎么存在本地,取了之后没有

问题描述 接收后调用这个方法conversation.addMessage(message);取消息用这个方法conversation.getAllMessages();这能取我发的,接收的取不出来,是取错了还是存错了查了一下内存数据库,都保存了,但是只能取自己发的,不能取到接收的 解决方案 获取会话需要传入对方的username

获取聊天记录时获取不全

问题描述 有多个聊天记录结果每次通过conversation.getAllMessages()只能获取一个的问题 解决方案 // 设置从db初始化加载时, 每个conversation需要加载msg的个数options.setNumberOfMessagesLoaded(1);看下这里的设置是不是1把这个参数改一下

为什么调用getConversation()获取不到?

问题描述 **为什么调用getConversation()获取不到?求助求助** 解决方案 A.登陆成功后需要调用EMGroupManager.getInstance().loadAllGroups();EMChatManager.getInstance().loadAllConversations();保证进入主页面后本地会话和群组都load完毕.另外如果登陆过,app长期在后台再进的时候也可能会导致加载到内存的群组和会话为空,可以在主页面的oncreate里也加上这两句代码,当然,更好的办法

仿造demo移植,可是会话未读次数一直返回零。

问题描述 使用EaseUI,仿造demo进行移植,可是EaseConversationAdapater中的conversation.getUnreadMsgCount()和MainActivity中的getUnreadMsgCountTotal都是返回为零未读次数的红点都没有显示出来. 解决方案 看看你这边是不是执行过 刷新的操作 Handler handler = new Handler() { private void refreshList() { // UI线程不能直接使用convers