SharedPreferences 是 Android 中常用的轻量级数据存储方式,适用于保存应用的配置信息或用户偏好设置。在基础用法之外,掌握以下高级技巧能显著提升数据管理能力:

1. 加密存储敏感数据 🔒

使用 SecretKeySpec 和 AES 加密算法对存储内容进行加密,避免明文保存密码、token 等敏感信息。
示例代码片段:

String encryptedData = encrypt("my_sensitive_data", "secret_key");
SharedPreferences.Editor editor = getSharedPreferences("my_app", MODE_PRIVATE).edit();
editor.putString("encrypted_key", encryptedData);
editor.apply();
SharedPreferences_加密存储

2. 多模式处理 🔄

通过 MODE_PRIVATEMODE_APPEND 等模式控制数据读写行为:

  • MODE_PRIVATE:默认模式,仅当前应用可读写
  • MODE_APPEND:追加模式,保留原有数据
  • MODE_WORLD_READABLE/MODE_WORLD_WRITEABLE:允许其他应用访问(已弃用,慎用
    ⚠️ 注意:Android 10+ 系统中,MODE_WORLD_READABLE 等模式可能因权限策略失效。

3. 支持复杂数据类型 🧮

除了基本类型,可通过 GsonParcelize 存储对象:

val user = User("Alice", 25)
val editor = getSharedPreferences("my_app", Context.MODE_PRIVATE).edit()
editor.putString("user_data", Gson().toJson(user))
editor.apply()
SharedPreferences_对象存储

4. 数据备份与迁移 🧱

通过 BackupManager 实现跨设备数据同步,或使用 Migration 工具处理数据格式升级。
📌 延伸阅读:Android 数据备份最佳实践

5. 性能优化技巧

  • 避免频繁调用 apply()commit(),建议批量操作
  • 使用 SharedPreferences.EditorputStringSet() 存储集合数据
  • 对大数据量场景考虑使用 SQLite 或 Room 数据库
SharedPreferences_性能优化

6. 常见问题排查 🛠

  • 数据丢失:检查 MODE_PRIVATE 是否正确,确保应用包名一致
  • 权限冲突:在 Android 10+ 中使用 Scoped Storage 时需适配
  • 版本兼容性:使用 Migration 处理 SharedPreferences 文件格式变更

如需进一步了解数据迁移方案,可访问 SharedPreferences 迁移指南