zhibo/android-app/后端接口TODO清单-用户头像.md

82 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 后端接口 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 功能