展示如何使用Preferences API进行轻量级数据存储,适用于保存用户设置、主题等简单数据
API级别: API 9+ | 项目路径: HarmonyOS_NEXT/DataManagement/Preferences
Preferences示例实现了一个主题桌面应用,支持三种主题切换,并演示了数据持久化功能。
import preferences from '@ohos.data.preferences'
const PREFERENCES_NAME = 'theme.db'
let preferenceTheme: preferences.Preferences | null = null
async getPreferencesFromStorage() {
let context = getContext(this) as Context
preferenceTheme = await preferences.getPreferences(context, PREFERENCES_NAME)
}
async putPreference(data: string) {
if (preferenceTheme !== null) {
await preferenceTheme.put('theme', data)
await preferenceTheme.flush() // 持久化到磁盘
}
}
async getPreference(): Promise {
let theme: string = ''
if (preferenceTheme !== null) {
// 第二个参数为默认值
theme = await preferenceTheme.get('theme', 'default') as string
return theme
}
return theme
}
| API | 说明 | 示例 |
|---|---|---|
| getPreferences() | 获取实例 | preferences.getPreferences(context, 'name') |
| put() | 写入数据 | await prefs.put('key', value) |
| get() | 读取数据 | await prefs.get('key', default) |
| delete() | 删除数据 | await prefs.delete('key') |
| flush() | 持久化 | await prefs.flush() |
| 类型 | 示例 |
|---|---|
| string | 'hello' |
| number | 123 |
| boolean | true/false |
| array | [1, 2, 3] |
| 场景 | 推荐方案 |
|---|---|
| 用户设置 | Preferences ✓ |
| 应用状态 | Preferences ✓ |
| 主题配置 | Preferences ✓ |
| 大量结构化数据 | relationalStore |
| 分布式数据 | distributedDataObject |
• Preferences数据存储在应用私有目录,其他应用无法访问
• 不适合存储敏感信息
• 频繁调用flush()会影响性能,建议批量操作后再调用
• 需处理可能出现的异常
📎 官方仓库链接