鸿蒙应用开发小例-实现数据持久化

本文介绍了如何使用OHOS的PreferencesUtils工具类来封装用户首选项,实现数据的持久化存储,包括加载、新增、获取和删除操作,并在应用生命周期中实际应用保存和获取设置值的示例。
摘要由CSDN通过智能技术生成

实现效果

默认字体颜色为绿色,修改颜色后,保存设置为橙色。

再次打开后,获取本地存储的数据,设置字体颜色为橙色。

实现思路

封装用户首选项(@ohos.data.preferences)工具类。

通过用户首选项的应用持久化轻量级数据的能力,保存设置。

代码实现

封装PreferencesUtils

导入模块:

import preferences from '@ohos.data.preferences';

工具类结构定义:

class PreferencesUtils {
    preMap: Map<string, preferences.Preferences> = new Map()
    
    // 加载数据
    async loadPreferences() {
        // ...
    }

    // 新增
    async putPreferencesValue() {
        // ...
    }
    
    // 获取
    async getPreferencesValue() {
        // ...
    }

    // 删除
    async deletePreferencesValue() {
        // ...
    }
}

实现加载方法:

  async loadPreferences(context, name: string) {
    try {
      const pref = await preferences.getPreferences(context, name)
      this.preMap.set(name, pref)
      console.log(`加载preferences[${name}]成功`)
    } catch (e) {
      console.log(`加载preferences[${name}]失败`, JSON.stringify(e))
    }
  }

实现新增方法:

  async putPreferencesValue(name: string, key: string, value: preferences.ValueType) 
  {
    if (!this.preMap.has(name)) {
      console.log(`preferences[${name}]尚未初始化`)
      return
    }
    try {
      const pref = this.preMap.get(name)
      await pref.put(key, value)
      await pref.flush()
      console.log(`preferences[${name}]保存成功`)
    } catch (e) {
      console.log(`preferences[${name}]保存失败`, JSON.stringify(e))
    }
  }

实现获取方法:

  async getPreferencesValue(name: string, key: string, defaultValue: preferences.ValueType) {
    if (!this.preMap.has(name)) {
      console.log(`preferences[${name}]尚未初始化`)
      return defaultValue
    }
    try {
      const pref = this.preMap.get(name)
      const value = await pref.get(key, defaultValue)
      console.log(`preferences[${name}].${key}=${value}读取成功`)
      return value
    } catch (e) {
      console.log(`preferences[${name}]读取失败`, JSON.stringify(e))
    }
  }

实现删除方法:

  async deletePreferencesValue(name: string, key: string) {
    if (!this.preMap.has(name)) {
      console.log(`preferences[${name}]尚未初始化`)
      return
    }
    try {
      const pref = this.preMap.get(name)
      await pref.delete(key)
      console.log(`preferences[${name}].${key}删除成功`)
    } catch (e) {
      console.log(`preferences[${name}]删除失败`, JSON.stringify(e))
    }
  }

导出:

const preferenceUtils = new PreferencesUtils()

export default preferenceUtils as PreferencesUtils
初始化PreferencesUtils

在EntryAbility中初始化:

// 引入PreferencesUtils
import PreferencesUtils from '../utils/PreferencesUtil'

// 在生命周期中初始化PreferencesUtils
onCreate(want, launchParam) {
    PreferencesUtils.loadPreferences(this.context, constants.PREFERENCE_KEY)
}
保存数据

改变颜色时保存数据:

await PreferencesUtils.putPreferencesValue('my_app', 'font_color', this.fontColor)
获取数据

在页面生命周期函数中获取数据:

this.fontColor = await PreferencesUtils.getPreferencesValue('my_app', 'font_color', '#00e09b')

完结散花

如发现文章内容有任何问题,请提出您的宝贵意见予以指正,感谢您的阅读。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值