注册

EaseConversationListFragment中接收不到消息

就是一个activity 中 只 添加了一个
EaseConversationListFragment(官方的没有改动)
后台admin 发送消息的之后
未读消息不会变,也就是接收不到

Screenshot_2017-05-01-20-57-10-851_zq.com_.iu_.png



QQ图片20170501210055.png


 
求做过的帮忙解决一下下 谢谢
已邀请:
需要在收到消息的时候刷新这个列表.做法如下:
 
这里我使用EventBus
1.继承EaseConversationListFragment,然后设置事件监听
    // 会话列表刷新事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void onBus(ConversationsListRefreshEvent event){
Log.i("mo--", "接收到会话列表刷新事件");
refresh();
}
2.在收到新的消息的时候出发刷新列表事件
 // 环信的消息监听
private EMMessageListener mMessageListener = new EMMessageListener(){

// 收到消息
@Override
public void onMessageReceived(List<EMMessage> list) {
android.util.Log.i("mo--", "接收到一条消息");
// 每次收到消息,都要刷新会话列表
EventBus.getDefault().post(new ConversationsListRefreshEvent());
}

// 收到透传消息
@Override
public void onCmdMessageReceived(List<EMMessage> list) {

}

// 收到已读回执
@Override
public void onMessageRead(List<EMMessage> list) {

}

// 收到已送达回执
@Override
public void onMessageDelivered(List<EMMessage> list) {

}

// 消息状态变动
@Override
public void onMessageChanged(EMMessage emMessage, Object o) {

}
};

至于为什么在点击搜索款后可以刷新消息,我猜与这个有关


QQ截图20170508163825.png


 
再来看看这个  refresh()  做了什么
 
    /**
* refresh ui
*/
public void refresh() {
if(!handler.hasMessages(MSG_REFRESH)){
handler.sendEmptyMessage(MSG_REFRESH);
}
}
给handler发了一条消息,再去handler中看
    protected Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
onConnectionDisconnected();
break;
case 1:
onConnectionConnected();
break;

case MSG_REFRESH:
{
conversationList.clear();
conversationList.addAll(loadConversationList());
conversationListView.refresh();
break;
}
default:
break;
}
}
};
点进 loadConversationList()可以看到EMClient.getInstance().chatManager().getAllConversations();这样的代码.
到这里,已经很清晰了,
其实就是重新加载了一次数据,在Fragment的onHiddenChanged和onResume中.
 

要回复问题请先登录注册