WuKongIM Docs

Android 会话管理

读取聊天列表、监听变化,并管理每个聊天的未读数。

编辑此页报告文档问题

WKUIConversationMsg 是聊天列表中的一项,包含频道、最后一条消息、时间和未读数。

异步读取聊天列表

WKIM.getInstance().getConversationManager().getAll(conversations -> {
    adapter.submitList(conversations);
});

getWkMsg() 返回最后一条消息,getWkChannel() 返回本地频道资料,lastMsgTimestampunreadCount 可直接用于列表。

监听变化

ConversationManager manager = WKIM.getInstance().getConversationManager();

manager.addOnRefreshMsgListListener("conversation-list", changedItems -> {
    mergeByChannel(changedItems);
});

manager.addOnDeleteMsgListener("conversation-list", (channelID, channelType) -> {
    removeRow(channelID, channelType);
});

变化回调只需更新受影响的频道。如果你更看重简单,可以在回调后重新异步读取 getAll

未读数与删除

用户打开聊天并确认看到消息后,把该频道未读数设为零:

manager.updateRedDot("bob", WKChannelType.PERSONAL, 0);

删除一个会话列表项:

manager.deleteWitchChannel("bob", WKChannelType.PERSONAL);

这个方法名在当前版本中就是 deleteWitchChannel。它删除会话项,不等同于清空该频道的全部消息。

多设备会话同步

manager.addOnSyncConversationListener((lastMsgSeqs, msgCount, version, callback) -> {
    conversationApi.sync(lastMsgSeqs, msgCount, version, callback::onBack);
});

业务接口返回 WKSyncChat,SDK 保存结果后会通知会话列表。Provider 只做数据转换,不直接操作 Activity 或 Fragment。

页面销毁时移除列表和删除监听器:

manager.removeOnRefreshMsgListListener("conversation-list");
manager.removeOnDeleteMsgListener("conversation-list");

本页内容