注册

为什么EMConversation的对象conversation已经定义为全局变量了,在接受消息的BroadcastReceiver里面还要重新定义

    private class NewMessageBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            // 消息id(每条消息都会生成唯一的一个id,目前是SDK生成)
            String msgId = intent.getStringExtra("msgid");
            //发送方
            String username = intent.getStringExtra("from");
            // 收到这个广播的时候,message已经在db和内存里了,可以通过id获取mesage对象
            EMMessage message = EMChatManager.getInstance().getMessage(msgId);
            EMConversation    conversation = EMChatManager.getInstance().getConversation(username);
            if (!username.equals(username)) {
                // 消息不是发给当前会话,return
                return;
            }
            conversation.addMessage(message);            
            adapter.notifyDataSetChanged();
            
            // 注销广播
            abortBroadcast();
        }
    }
不然接收不到消息
已邀请:
同一用户的会话对象只有一个,接到消息时,没有会话对象会新创建,会话对象已存在的话会复用,这个逻辑是这样的。至于是否是全局的,这只是个变量上的使用问题,是用局部还是全局你可以自行定义。

要回复问题请先登录注册