7.0 KiB
7.0 KiB
优化实施计划
优化目标
基于函数调用分析报告,对 Android Backup GUI 进行系统性优化,目标:
- 性能提升:备份/恢复速度提升 30-50%
- 代码质量:消除重复代码,统一错误处理
- 用户体验:详细进度、友好错误提示、智能建议
- 可靠性:增加重试机制、改进错误恢复
Phase 1: 基础优化(P1 优先级)
1.1 提取密码获取公共函数
问题:密码获取逻辑在 3+ 处重复
实施:
- 创建
CredentialProvider对象 - 统一密码获取和设置逻辑
- 支持从 KeyStore 和配置文件获取
文件修改:
app/src/main/java/com/example/androidbackupgui/backup/CredentialProvider.kt(新建)BackupViewModel.ktConfigViewModel.ktRestoreScreen.kt
预期收益:
- 消除 ~50 行重复代码
- 统一密码管理逻辑
- 便于后续维护
1.2 应用信息缓存机制
问题:重复查询应用版本、大小等信息
实施:
- 创建
AppMetadataCache对象 - 缓存版本号、APK 路径、OBB 信息
- 支持手动失效和自动过期
文件修改:
app/src/main/java/com/example/androidbackupgui/backup/AppMetadataCache.kt(新建)BackupOperation.ktAppScanner.kt
预期收益:
- 减少 30-40% 的 RootShell 调用
- 增量备份速度提升 50%+
1.3 批量 RootShell 调用优化
问题:多次独立 RootShell 调用导致进程开销
实施:
- 创建
BatchRootShell工具类 - 实现批量文件检查、版本查询、状态检查
- 优化 BackupOperation 中的重复调用
文件修改:
app/src/main/java/com/example/androidbackupgui/backup/BatchRootShell.kt(新建)BackupOperation.ktRestoreOperation.kt
预期收益:
- 减少 20-30% 的 RootShell 调用
- 备份速度提升 15-25%
Phase 2: 核心优化(P0 优先级)
2.1 增量备份优化
问题:每次备份都查询所有应用信息
实施:
- 优化增量检查逻辑
- 批量查询版本号
- 智能跳过未变化应用
文件修改:
BackupOperation.kt-backupApps()方法AppMetadataCache.kt- 集成缓存
预期收益:
- 增量备份时间减少 80%+
- 网络传输减少 90%+
2.2 智能并发控制
问题:固定并发数 Semaphore(3) 不适应所有场景
实施:
- 根据 CPU 核心数动态调整并发
- 根据内存使用率调整并发
- SSD/eMMC 存储类型检测
文件修改:
BackupOperation.kt-backupApps()方法RestoreOperation.kt-restoreApps()方法
预期收益:
- 高端设备备份速度提升 30%+
- 低端设备稳定性提升
2.3 Restic 增量备份优化
问题:Restic 增量去重是核心竞争力,但调用链可优化
实施:
- 优化 ResticCommandRunner 调用
- 增加连接健康检查
- 实现网络重试机制
文件修改:
ResticCommandRunner.ktBackendExecutor.ktRestBridgeRunner.kt
预期收益:
- 远程备份成功率提升
- 网络异常恢复能力增强
Phase 3: 用户体验优化(P2 优先级)
3.1 进度显示优化
问题:进度信息不够详细,缺少预计时间
实施:
- 重构
BackupProgress数据类 - 计算总体进度百分比
- 估算剩余时间
文件修改:
BackupOperation.kt-BackupProgress类BackupViewModel.kt- 进度处理BackupScreen.kt- UI 显示
预期收益:
- 用户体验显著提升
- 备份过程更透明
3.2 错误处理优化
问题:错误信息不友好,缺少解决建议
实施:
- 扩展
AppError类型系统 - 添加错误解决建议
- 支持错误恢复机制
文件修改:
AppError.ktBackupViewModel.ktRestoreOperation.kt
预期收益:
- 用户自助解决问题能力提升
- 技术支持成本降低
3.3 恢复预览功能
问题:恢复前无法预览将要恢复的内容
实施:
- 创建
RestorePreview数据类 - 显示将要恢复的应用列表
- 标记会覆盖的应用
文件修改:
RestoreScreen.ktRestoreOperation.kt
预期收益:
- 避免误恢复
- 用户决策更明智
Phase 4: 高级优化(P3 优先级)
4.1 并行恢复优化
问题:恢复操作串行执行,效率低
实施:
- APK 安装并行化
- 数据恢复并行化
- SSAID 恢复串行化(依赖已安装应用)
文件修改:
RestoreOperation.kt-restoreApps()方法
预期收益:
- 恢复速度提升 40%+
4.2 备份完整性校验
问题:备份后缺少完整性校验
实施:
- 备份后自动校验归档
- 生成校验和文件
- 支持手动校验
文件修改:
BackupOperation.kt- 备份后校验ResticBackup.kt- Restic 校验
预期收益:
- 数据完整性保障
- 用户信心提升
4.3 配置导入导出优化
问题:配置导出不够完善
实施:
- 支持完整配置导出(包括密码)
- 支持配置导入验证
- 支持配置迁移
文件修改:
ConfigViewModel.ktConfigScreen.kt
预期收益:
- 用户迁移配置更方便
- 减少配置错误
实施顺序
Week 1: Phase 1 - 基础优化
- 1.1 提取密码获取公共函数
- 1.2 应用信息缓存机制
- 1.3 批量 RootShell 调用优化
Week 2: Phase 2 - 核心优化
- 2.1 增量备份优化
- 2.2 智能并发控制
- 2.3 Restic 增量备份优化
Week 3: Phase 3 - 用户体验优化
- 3.1 进度显示优化
- 3.2 错误处理优化
- 3.3 恢复预览功能
Week 4: Phase 4 - 高级优化
- 4.1 并行恢复优化
- 4.2 备份完整性校验
- 4.3 配置导入导出优化
风险评估
高风险
- 增量备份逻辑修改 - 可能导致数据丢失
- 缓解:充分测试,保留旧逻辑作为回退
中风险
- 并发控制调整 - 可能影响稳定性
- 缓解:渐进式调整,监控性能指标
低风险
- 缓存机制 - 可能导致数据不一致
- 缓解:实现缓存失效机制,支持手动刷新
测试策略
单元测试
- CredentialProvider 测试
- AppMetadataCache 测试
- BatchRootShell 测试
集成测试
- 完整备份流程测试
- 增量备份流程测试
- 恢复流程测试
性能测试
- 100 应用备份性能测试
- 增量备份性能测试
- 远程备份性能测试
用户验收测试
- 真实设备测试
- 用户场景测试
- 边界条件测试
预期成果
性能提升
- 首次完整备份:15分钟 → 10分钟 (33% 提升)
- 增量备份:3分钟 → 30秒 (83% 提升)
- 恢复操作:10分钟 → 6分钟 (40% 提升)
- 远程备份:30分钟 → 20分钟 (33% 提升)
代码质量
- 重复代码减少 60%+
- 单元测试覆盖率提升到 70%+
- 代码可维护性显著提升
用户体验
- 进度显示更详细
- 错误提示更友好
- 操作流程更顺畅
可靠性
- 备份成功率提升到 99%+
- 恢复成功率提升到 99%+
- 网络异常恢复能力增强