关于远程消息拉取问题

lcc 3天前 38

public MutableLiveData<List<UiMessage>> loadRemoteMessages(Conversation conversation, long fromMessageUid,  int count) {
        MutableLiveData<List<UiMessage>> result = new MutableLiveData<>();
        ChatManager.Instance().getWorkHandler().post(() -> {
            List<Integer> contentTypes = BaseUtils.getMessageContentTypesByConversation(conversation);
            GetRemoteMessageCallback callback =  new GetRemoteMessageCallback() {
                @Override
                public void onSuccess(List<Message> messages) {
                    if (messages != null && !messages.isEmpty()) {
                        insertMessages(messages);
                        List<UiMessage> uiMsgs = new ArrayList<>();
                        for (Message msg : messages) {
                            Log.d(TAG, "remote --- msg: id:" + msg.messageId + " msgUid: " + msg.messageUid + " type: " + msg.content.getMessageContentType());
                            uiMsgs.add(new UiMessage(msg));
                        }
                        result.postValue(uiMsgs);
                    } else {
                        Log.d(TAG, "remote --- msg is empty");
                        result.postValue(new ArrayList<>());
                    }
                }

                @Override
                public void onFail(int errorCode) {
                    Log.e(TAG, "remote --- error: " + errorCode);
                    result.postValue(new ArrayList<>());
                }
            };
            Log.d(TAG,"-------------- conversation: " + conversation.target + " fromMessageUid: " + fromMessageUid);
            ChatManager.Instance().getRemoteMessages(conversation, contentTypes, fromMessageUid, count, callback);
        });

以上是我实现的加载远程消息的方法,现在有一个问题需要请教一下:

  1. 打开一个会话窗口,我先加载本地消息,如果需要加载远程消息,那么把本地消息的最早一个条的messegeUid作为参数传入并拉取,则结果正常。
  2. 如果打开一个会话窗口后,没有本地消息,那么需要直接加载远程消息,此时的 fromMessageUid 为0, 以这个参数传入,拉取到的消息列表为空。
  3. 如果此时在该会话中发送一条消息,那么此时下拉刷新,就可以拉取到正常的远程消息。

我觉得第2点无法拉取到远程消息貌似有些问题,难道是我的参数传入不正确?还是说使用方式不对?

最新回复 (2)
  • HeavyRain 2天前
    引用 2
    2用long的最大值试试
  • lcc 1天前
    引用 3
    HeavyRain 2用long的最大值试试
    fromMessageUid  使用 long MAX_VALUE = 9223372036854775807L, 这个值,也是一样的结果,拉取不到消息
返回