preferences工具类封装

preferences工具类封装

HarmonyOS
2024-05-26 17:50:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
bhtlilly

在使用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) 
    }) 
  } 
}
分享
微博
QQ
微信
回复
2024-05-27 22:38:25
相关问题
如何封装一个通用的commonEvent工具
753浏览 • 1回复 待解决
鸿蒙-有没有缓存工具
4597浏览 • 1回复 待解决
工具里怎么调用startAbility?
3594浏览 • 1回复 待解决
如何在工具中获取Context
741浏览 • 1回复 待解决
工具里 怎么跳转或打开页面呢?
2443浏览 • 1回复 待解决
能否支持json转实体工具
520浏览 • 1回复 待解决
Preferences不起作用
2949浏览 • 1回复 待解决
Preferences获取不到值
7525浏览 • 2回复 待解决
CustomDialogController能否支持再次封装
329浏览 • 1回复 待解决
新人求简单封装方法?
3279浏览 • 1回复 待解决
有没有基于socket封装成熟的网络库?
524浏览 • 1回复 待解决
封装HTTP请求在ArkTS中常见吗
1726浏览 • 1回复 已解决