diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageExListenerSingleton.java b/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageExListenerSingleton.java index 838963e2..05147429 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageExListenerSingleton.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageExListenerSingleton.java @@ -337,7 +337,7 @@ public class MessageExListenerSingleton { @Override public void onRecvGroupCustomMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, byte[] customData) { - LogUtils.d("收到群自定义消息:群组 " + groupID + " 中 " + sender.getNickName()); + LogUtils.d("收到群自定义消息:群组 " + groupID + " 中 " + sender.getNickName() +",mRoomId:"+mRoomId); if (!groupID.equals("")) { if (groupID.replace("room","").equals(mRoomId)) { String message = new String(customData, StandardCharsets.UTF_8); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java b/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java index 90f7a3bb..7bbc3ce5 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java @@ -41,6 +41,8 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; +import lombok.Getter; + /** * @author qx * @data 2025/6/17 @@ -52,7 +54,8 @@ public class MessageListenerSingleton { private List listeners = new ArrayList<>(); private V2TIMSimpleMsgListener simpleMsgListener; private V2TIMAdvancedMsgListener v2TIMAdvancedMsgListener; - private static String mRoomId = ""; + @Getter + public String mRoomId = ""; public static String groupId; private V2TIMGroupListener groupListener; private V2TIMConversationListener conversationListener; // 需要保存引用 @@ -96,7 +99,6 @@ public class MessageListenerSingleton { // 同时修改 removePublicScreenMessageListener 方法 public void removePublicScreenMessageListener(PublicScreenMessageListener listener) { - mRoomId = ""; if (listener == null) { return; } @@ -205,16 +207,16 @@ public class MessageListenerSingleton { // 修改 joinGroup 方法,确保先退出再加入 public void joinGroup(String roomId) { + if (TextUtils.isEmpty(roomId)) { return; } - if (Objects.equals(mRoomId, roomId)) - return; + synchronized (groupOperationLock) { if (isGroupOperationInProgress) { // 如果有操作正在进行,延迟执行 mainHandler.removeCallbacksAndMessages(null); - mainHandler.postDelayed(() -> joinGroup(roomId), 100); + mainHandler.postDelayed(() -> joinGroup(roomId), 200); return; } @@ -340,7 +342,7 @@ public class MessageListenerSingleton { @Override public void onRecvGroupCustomMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, byte[] customData) { - LogUtils.d("收到群自定义消息:群组 " + groupID + " 中 " + sender.getNickName()); + LogUtils.d("收到群自定义消息:群组 " + groupID + " 中 " + sender.getNickName() +",mRoomId:"+mRoomId); if (!groupID.equals("")) { if (groupID.replace("room","").equals(mRoomId)) { String message = new String(customData, StandardCharsets.UTF_8); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java index 11f0130e..379e3003 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java @@ -177,7 +177,7 @@ public class ChatRoomFragment extends BaseMvpFragment