Files
zhini_im/开发文档/账号安全页面增加默认手机号/账号安全页面增加默认手机号.txt
rw0067680 c01808ac21 first commit
Change-Id: Ib7c2ab10a2562044fcaf9879388a6cbc1db6ac61
2025-12-23 10:00:49 +08:00

215 lines
7.3 KiB
Plaintext
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.
# 账号安全页面增加默认手机号显示功能文档
## 功能背景
根据用户需求,在"我的-设置-账号安全"页面的手机号条目中需要显示当前用户的手机号,让用户清楚知道当前绑定的手机号,提升用户体验。
## 问题描述
**测试步骤**:我的-设置-账号安全页面
**问题**:手机号条目只显示"手机号"文字,没有显示当前绑定的手机号码,用户不知道当前绑定的手机号是什么。
## 功能实现
### 1. 修改AccountActivity.java
#### 1.1 添加必要的导入
**文件路径**`app/src/main/java/com/xunpaisoft/social/im/setting/AccountActivity.java`
```java
import android.text.TextUtils;
import cn.wildfire.chat.kit.user.UserViewModel;
import cn.wildfire.chat.kit.widget.OptionItemView;
import cn.wildfirechat.model.UserInfo;
```
#### 1.2 添加成员变量
```java
public class AccountActivity extends WfcBaseActivity {
private OptionItemView phoneOptionItem;
private UserViewModel userViewModel;
// ... 其他代码
}
```
#### 1.3 修改afterViews()方法
```java
@Override
protected void afterViews() {
super.afterViews();
setToolBarTitle("账号安全");
// 初始化手机号选项
phoneOptionItem = findViewById(R.id.ov_phone);
// 初始化UserViewModel并加载用户信息
userViewModel = new UserViewModel();
loadUserInfo();
}
```
#### 1.4 添加loadUserInfo()方法
```java
/**
* 加载用户信息并显示手机号
*/
private void loadUserInfo() {
userViewModel.getUserInfoAsync(userViewModel.getUserId(), true)
.observe(this, userInfo -> {
if (userInfo != null) {
// 显示当前手机号
if (!TextUtils.isEmpty(userInfo.mobile)) {
phoneOptionItem.setDesc(userInfo.mobile);
} else {
phoneOptionItem.setDesc("未绑定手机号");
}
}
});
}
```
### 2. 技术实现细节
#### 2.1 数据获取机制
- **UserViewModel**使用ViewModel模式获取用户信息
- **LiveData**通过LiveData确保数据获取的异步性和实时性
- **用户ID**:通过 `userViewModel.getUserId()` 获取当前用户ID
- **手机号字段**:通过 `userInfo.mobile` 字段获取手机号
#### 2.2 界面显示机制
- **OptionItemView**使用现有的OptionItemView组件
- **setDesc()方法**通过setDesc()方法设置右侧显示内容
- **异常处理**:处理手机号为空的情况,显示"未绑定手机号"
#### 2.3 生命周期管理
- **observe()**使用observe()方法绑定Activity生命周期
- **自动更新**:当用户信息发生变化时,界面会自动更新
- **内存安全**LiveData会自动处理生命周期避免内存泄漏
### 3. 功能效果
#### 3.1 页面显示效果
```
账号安全
├── 手机号 → 18792702169
└── 注销账号
```
#### 3.2 用户体验提升
- **信息透明**:用户清楚知道当前绑定的手机号
- **操作便利**:不需要进入其他页面就能看到手机号
- **视觉一致**:与系统设置页面的风格保持一致
- **异常友好**:未绑定手机号时显示友好提示
#### 3.3 交互流程
1. **页面打开** → 自动获取当前用户信息
2. **数据加载** → 通过UserViewModel获取用户数据
3. **界面更新** → 在手机号条目右侧显示手机号
4. **用户操作** → 点击手机号条目跳转到更换手机号页面
### 4. 代码结构
#### 4.1 类结构
```java
public class AccountActivity extends WfcBaseActivity {
// 成员变量
private OptionItemView phoneOptionItem;
private UserViewModel userViewModel;
// 生命周期方法
@Override
protected void afterViews() { ... }
// 业务方法
private void loadUserInfo() { ... }
void changePassword() { ... }
protected void resignAccount() { ... }
}
```
#### 4.2 方法职责
- **afterViews()**:初始化界面和加载用户信息
- **loadUserInfo()**:获取用户信息并更新界面
- **changePassword()**:处理手机号条目点击事件
- **resignAccount()**:处理注销账号功能
### 5. 异常处理
#### 5.1 数据获取异常
- **用户信息为空**:不进行任何操作,保持界面原状
- **手机号为空**:显示"未绑定手机号"提示
- **网络异常**LiveData会自动重试无需额外处理
#### 5.2 界面更新异常
- **OptionItemView为空**通过findViewById获取确保不为空
- **数据更新失败**LiveData机制保证数据一致性
### 6. 性能优化
#### 6.1 数据获取优化
- **ViewModel复用**:使用单例模式,避免重复创建
- **LiveData缓存**LiveData会自动缓存数据避免重复请求
- **生命周期绑定**自动处理Activity生命周期避免内存泄漏
#### 6.2 界面更新优化
- **异步更新**:数据获取在后台线程,界面更新在主线程
- **增量更新**:只有数据变化时才更新界面
- **内存管理**LiveData自动管理内存无需手动处理
### 7. 测试验证
#### 7.1 功能测试
1. **正常情况**:用户已绑定手机号,显示完整手机号
2. **异常情况**:用户未绑定手机号,显示"未绑定手机号"
3. **网络异常**:网络断开时,保持原有显示状态
4. **数据更新**:用户信息更新时,界面自动更新
#### 7.2 界面测试
1. **布局正确**:手机号显示在条目右侧
2. **样式一致**:与系统设置页面风格保持一致
3. **交互正常**:点击条目正常跳转到更换手机号页面
4. **响应及时**:页面打开后及时显示手机号
### 8. 文件清单
#### 8.1 修改文件
1. `app/src/main/java/com/xunpaisoft/social/im/setting/AccountActivity.java` - 主要修改文件
#### 8.2 依赖文件
1. `cn.wildfire.chat.kit.user.UserViewModel` - 用户信息获取
2. `cn.wildfire.chat.kit.widget.OptionItemView` - 界面组件
3. `cn.wildfirechat.model.UserInfo` - 用户信息模型
### 9. 优势特点
#### 9.1 用户体验
- **信息透明**:用户清楚知道当前绑定的手机号
- **操作便利**:不需要进入其他页面就能看到手机号
- **视觉清晰**:通过右侧显示,信息层次清晰
- **异常友好**:未绑定手机号时提供友好提示
#### 9.2 技术优势
- **架构清晰**使用MVVM架构代码结构清晰
- **性能优良**LiveData机制保证性能和内存安全
- **维护性好**:代码简洁,易于维护和扩展
- **兼容性强**:与现有代码完全兼容
#### 9.3 业务价值
- **提升用户体验**:让用户清楚知道当前状态
- **减少操作步骤**:不需要进入其他页面查看信息
- **增强信任感**:信息透明提升用户信任
- **降低错误率**:减少用户操作错误
### 10. 总结
本次功能实现成功在账号安全页面添加了手机号显示功能,通过以下方式实现:
1. **界面优化**:在手机号条目右侧显示当前手机号
2. **功能完善**:自动获取并显示用户当前绑定的手机号
3. **用户体验**:让用户清楚知道当前绑定的手机号,提升操作体验
4. **技术实现**使用MVVM架构和LiveData机制保证代码质量和性能
功能实现后,用户进入账号安全页面就能清楚看到当前绑定的手机号,完全满足了用户需求,提升了应用的用户体验。