preferences工具类封装

preferences工具类封装

HarmonyOS
2024-05-26 17:50:25
1.2w浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
落月无痕

在使用preferences存储和删除数据的时候,一般都要先使用data_preferences.getPreferences(context)获取preferences对象然后再对数据进行操作,这样会使代码比较冗余。

为了简化代码,这里封装了一个preferences工具类,示例代码如下:

import data_preferences from '@ohos.data.preferences' 
  
const PREFERENCES_NAME = "my_pre" 
  
export default class PreUtil { 
  private static instance: PreUtil; 
  private preferences; 
  
  private constructor(context) { 
    this.getPre(context) 
  } 
  
  // 获取单例对象 
  public  static getInstance(context) { 
    if (this.instance == null) { 
      this.instance = new PreUtil(context) 
    } 
    return this.instance 
  } 
  
  // 获取preferences对象 
  getPre(context) { 
    let promise = data_preferences.getPreferences(context, PREFERENCES_NAME) 
    promise.then((preferences) => { 
      console.info("PreUtil Get preferences successfully.") 
      this.preferences = preferences 
    }).catch((err) => { 
      console.info("PreUtil Get preferences failed. err:" + err) 
    }) 
  } 
  
  // 保存数据 
  putVal(key: string, val) { 
    let promise = this.preferences.put(key, val) 
      promise.then(() => { 
        console.info("PreUtil Put value of " + key + " successfully.") 
        let promise = this.preferences.flush() 
        promise.then(() => { 
        console.info("PreUtil Flushed to file successfully.") 
        }).catch((err) => { 
          console.info("PreUtil Flush to file failed, err: " + err) 
        }) 
    }).catch((err) => { 
      console.info("PreUtil Put value of startup failed, err: " + err) 
    }) 
  } 
  
  // 获取数据 
  getVal(key: string, defaultVal) { 
    let promise = this.preferences.get(key, defaultVal) 
    promise.then((value) => { 
      console.info("PreUtil Get value of " + key + " is " + value) 
    }).catch((err) => { 
      console.info("PreUtil Get value of " + key + " failed, err: " + err) 
    }) 
  } 
  
  // 删除数据 
  deleteVal(key: string) { 
    let promiseDel = this.preferences.delete(key) 
    promiseDel.then(() => { 
      console.info("PreUtil Deleted key " + key + " successfully.") 
    }).catch((err) => { 
      console.info("PreUtil Deleted key " + key + " failed with err:" + err) 
    }) 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
分享
微博
QQ
微信
回复
2024-05-27 22:38:25


相关问题
如何封装一个通用的commonEvent工具
2299浏览 • 1回复 待解决
HarmonyOS 需要一个axios封装工具
457浏览 • 1回复 待解决
HarmonyOS 是否有封装的数据库工具
633浏览 • 1回复 待解决
HarmonyOS 如何封装页面
962浏览 • 1回复 待解决
鸿蒙-有没有缓存工具
6499浏览 • 1回复 待解决
HarmonyOS color argb工具问题
792浏览 • 1回复 待解决
工具里怎么调用startAbility?
5285浏览 • 1回复 待解决
如何在工具中获取Context
2565浏览 • 1回复 待解决
HarmonyOS有mimeType的工具吗?
678浏览 • 1回复 待解决
HarmonyOS 开发中需要的工具
844浏览 • 1回复 待解决
日志工具的使用方法
952浏览 • 1回复 待解决
能否支持json转实体工具
1454浏览 • 1回复 待解决
工具里 怎么跳转或打开页面呢?
4377浏览 • 1回复 待解决
上下文工具的方法有哪些?
756浏览 • 1回复 待解决
HarmonyOS 工具自定义弹窗方案咨询
538浏览 • 1回复 待解决
HarmonyOS 是否有json转实体工具
627浏览 • 1回复 待解决