# 后端接口 TODO 清单 - 用户头像加载模块 ## 1. 获取用户头像 **文件**: `ConversationMessagesAdapter.java`, `ConversationsAdapter.java`, `FriendsAdapter.java` **接口路径**: `GET /api/users/{userId}/avatar` **请求参数**: userId (路径参数) **返回数据**: ```json { "code": 200, "data": { "avatarUrl": "string" } } ``` **说明**: - 如果消息对象(ChatMessage/ConversationItem/FriendItem)已包含 avatarUrl 字段,直接使用该URL加载头像 - 如果 avatarUrl 为空,则根据 userId 调用此接口获取头像URL - 建议在后端返回消息时直接包含 avatarUrl,减少额外请求 ## 2. 获取用户在线状态 **文件**: `FriendsAdapter.java` **接口路径**: `GET /api/users/{userId}/status` **请求参数**: userId (路径参数) **返回数据**: ```json { "code": 200, "data": { "isOnline": "boolean", "lastActiveTime": "number" } } ``` **说明**: - 用于显示好友列表中的在线状态 - 建议使用 WebSocket 实时推送在线状态变化 - 备选方案:轮询获取(每30秒一次) ## 3. 批量获取用户头像 **文件**: 多个适配器文件 **接口路径**: `POST /api/users/avatars/batch` **请求参数**: ```json { "userIds": ["string"] } ``` **返回数据**: ```json { "code": 200, "data": { "userId1": "avatarUrl1", "userId2": "avatarUrl2" } } ``` **说明**: - 用于批量获取多个用户的头像URL - 减少网络请求次数,提升性能 - 适用于列表页面(消息列表、好友列表等) ## 头像加载优化建议 ### 1. 缓存策略 - 使用 Glide 的磁盘缓存和内存缓存 - 设置合理的缓存过期时间(如7天) ### 2. 占位图 - 加载中显示默认头像 - 加载失败显示默认头像 - 根据用户名生成不同颜色的默认头像 ### 3. 图片压缩 - 后端返回不同尺寸的头像URL(缩略图、原图) - 列表页面使用缩略图,详情页面使用原图 ### 4. 预加载 - 在列表滚动时预加载即将显示的头像 - 使用 Glide 的 preload 功能