diff --git a/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java b/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java index 1d30cc1..fdf966f 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java +++ b/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; /** * 5/20/21 5:49 PM @@ -43,7 +44,7 @@ public class ChannelManager extends BaseManager { private IRefreshChannelAvatar iRefreshChannelAvatar; private IGetChannelInfo iGetChannelInfo; - private final List wkChannelList = Collections.synchronizedList(new ArrayList<>()); + private final CopyOnWriteArrayList wkChannelList = new CopyOnWriteArrayList<>(); //监听刷新频道 private ConcurrentHashMap refreshChannelMap; diff --git a/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java b/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java index 6c3d3e4..7cbcef4 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java +++ b/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java @@ -24,6 +24,7 @@ import com.xinbida.wukongim.interfaces.ISyncConversationChat; import com.xinbida.wukongim.interfaces.ISyncConversationChatBack; import com.xinbida.wukongim.message.type.WKConnectStatus; import com.xinbida.wukongim.message.type.WKMsgContentType; +import com.xinbida.wukongim.utils.DispatchQueuePool; import com.xinbida.wukongim.utils.WKCommonUtils; import com.xinbida.wukongim.utils.WKLoggerUtils; @@ -41,6 +42,8 @@ import java.util.concurrent.ConcurrentHashMap; * 最近会话管理 */ public class ConversationManager extends BaseManager { + private final DispatchQueuePool dispatchQueuePool = new DispatchQueuePool(3); + private final String TAG = "ConversationManager"; private ConversationManager() { @@ -238,7 +241,7 @@ public class ConversationManager extends BaseManager { long version = ConversationDbManager.getInstance().queryMaxVersion(); String lastMsgSeqStr = ConversationDbManager.getInstance().queryLastMsgSeqs(); runOnMainThread(() -> iSyncConversationChat.syncConversationChat(lastMsgSeqStr, 20, version, syncChat -> { - new Thread(() -> saveSyncChat(syncChat, () -> iSyncConversationChatBack.onBack(syncChat))).start(); + dispatchQueuePool.execute(() -> saveSyncChat(syncChat, () -> iSyncConversationChatBack.onBack(syncChat))); })); } } diff --git a/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java b/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java index 603f393..24ef6f9 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java +++ b/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java @@ -139,7 +139,7 @@ public class CryptoUtils { public byte[] base64Decode(String data) { - return Base64.decode(data, Base64.NO_WRAP); + return Base64.decode(data, Base64.NO_WRAP); } /**