会话列表页面
会话列表页面展示当前设备上的所有会话。本地消息数据库生成消息后自动创建会话列表,并按时间倒序排列,置顶会话优先显示。
IMKit 提供基于 Activity 类和 基于 Fragment 类实现的会话列表页面。
- 基于 Activity:IMKit SDK 默认提供会话列表 Activity,包含标题栏和会话列表视图。当 SDK 内部需要跳转至会话列表时,默认使用该 Activity。
- 基于 Fragment:您可以在自定义 Activity 中集成 IMKit 提供的会话列表 Fragment,实现个性化界面。注意:需将该 Activity 注册至 IMKit SDK,以覆盖默认会话列表 Activity。
会话列表界面
会话列表页面一般由标题栏和会话列表两部分组成。
IMKit 默认提供的 RongConversationListActivity 已内置标题栏实现。若基于 Fragment 构建会话列表页面,需自行实现标题栏功能。

标题栏
IMKit 仅在默认的(RongConversationListActivity)中实现了标题栏功能。默认展示会话列表。
会话列表
会话列表组件按时间倒序显示所有会话的列表,置顶会话会排在最前。长按会话列表中的会话时显示弹窗菜单,IMKit 默认实现了置顶/取消置顶会话和删除会话功能。
会话列表中默认会话的视图由 PrivateConversationProvider.java 等模板类创建。您可继承使用 BaseDataProcessor,聚合(折叠)或过滤需要在列表中展示的会话项目。
如果开启了多设备消息同步,在换新设备登录或应用卸载重装场景下,离线补偿机制仅可获取到最近 1 天(默认离 线补偿天数为 1 天,最大可调整为 7 天)的单聊、群聊会话消息。超出时限的会话无法通过离线补偿机制获取。因此,离线补偿后的会话列表可能与原设备上或卸载前的会话列表不一致(非数据丢失)。
用法
IMKit 提供了 Activity 和 Fragment 来创建会话列表页面。RongConversationListActivity 是默认提供的会话列表页面。您可以根据需要,选择直接使用默认的会话列表页面 Activity,或者继承 RongConversationListActivity,或者使用 ConversationListFragment 构建自定义会话列表 Activity。
IMKit SDK 默认已经实现在会话列表页点击某条会话时,跳转到对应的会话页面。
启动会话列表页面
IMKit 提供以下方式启动会话列表:
- 内置路由:
RouteUtils.routeToConversationListActivity(context, title); - 标准启动:
startActivity(new Intent(context, RongConversationListActivity.class));
使用 RouteUtils
RouteUtils 是 IMKit 内置的 Activity 路由器,封装了 SDK 内部各页面跳转方法。
如果您构建了自定义的会话列表 Activity,必须先向 RouteUtils 注册自定义 Activity,才能通过 RouteUtils 跳转到自定义会话列表 Activity,否则跳转的是 SDK 默认的 RongConversationListActivity。
跳转到会话列表 Activity:
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
context | Context | activity 上下文 |
title | String | 会话列表页面标题。如果传空,会显示为默认标题 “会话列表”。 |
示例代码
RouteUtils.routeToConversationListActivity(context, title);
通过 intent 跳转
您可以自己组装 Intent, 使用 Android 默认机制进行跳转。
Intent intent = new Intent(context, MyConversationListActivity.class);
context.startActivity(intent);