code: public void updateInfoInBackground(final AVIMConversationCallback callback) {
      if (!pendingAttributes.isEmpty() || !pendingInstanceData.isEmpty()) {
        Map<String, Object> attributesMap = new HashMap<>();
        if (!pendingAttributes.isEmpty()) {
          final Map<String, Object> pendingAttrMap = processAttributes(pendingAttributes, false);
          if (null != pendingAttrMap) {
            attributesMap.putAll(pendingAttrMap);
          }
        }
  
        if (!pendingInstanceData.isEmpty()) {
          attributesMap.putAll(pendingInstanceData);
        }
  
        Map<String, Object> params = new HashMap<String, Object>();
        if (!attributesMap.isEmpty()) {
          params.put(Conversation.PARAM_CONVERSATION_ATTRIBUTE, attributesMap);
        }
        final AVIMCommonJsonCallback tmpCallback = new AVIMCommonJsonCallback() {
          @Override
          public void done(Map<String, Object> result, AVIMException e) {
            if (null == e) {
              attributes.putAll(pendingAttributes);
              pendingAttributes.clear();
              instanceData.putAll(pendingInstanceData);
              pendingInstanceData.clear();
              storage.insertConversations(Arrays.asList(AVIMConversation.this));
            }
            if (null != callback) {
              callback.internalDone(e);
            }
          }
        };
        InternalConfiguration.getOperationTube().updateConversation(this.client.getClientId(), this.conversationId, this.getType(),
                params, tmpCallback);
      } else {
        if (null != callback) {
          callback.internalDone(null);
        }
      }
    }
docs: 更新当前对话的属性至服务器端
  
  @param callback
  @since 3.0