在上一篇章中我们了解到了PersistentStorage的状态持久化内存状态,但是这个PersistentStorage有许多限制条件和存在一些不足,比如说如果我们写入大量的数据持久化,那么就会影响性能,因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在线程中执行,从而导致性能的下降。而且PersistentStorage只能在UI页面内使用否则将无法持久化数据。

为了弥补这些缺点和不足,就引出了本篇内容的主角"preferences"首选项

在首选项中提供Key-Value键值型数据的处理接口,实现对轻量级KV数据的查询、修改和持久化功能。其中,每个key的value的长度最大为8kb。

其他的我们不说我们直接上示例

typescript
import { preferences } from "@kit.ArkData"

@Entry
@Component
struct PreferencesPage {

  defaultStore: string = "DefaultStore"
  oneStore: string = "oneStore"
  tKey: string = "tKey"
  @State showTxt: string = ""
  setToken(token: string, storeName: string = this.defaultStore) {
    const store = preferences.getPreferencesSync(getContext(), { name: storeName })
    store.putSync(this.tKey, token)
    store.flushSync()
  }

  aboutToAppear(): void {
    this.setToken("你好")
    this.showTxt = preferences.getPreferencesSync(getContext(), { name: this.defaultStore }).getSync(this.tKey, "") as string
  }

  build() {
    Column() {
      Text(this.showTxt)
        .fontSize(24)
    }
  }
}

class PreferencesClass {
  defaultStore: string = 'xxxx'
  firstStore: string = 'xxx'
  // 字段名称,一个字段配2个方法,读取和写入
  tokenKey:string = 'TOKEN_KEY'
  //   向仓库中存储内容
  setToken(content: Context, token: string, storeName: string = this.defaultStore){
    const store = preferences.getPreferencesSync(content, {name: storeName})
    store.putSync(this.defaultStore,token)
    store.flush() //存储
  }
  //   读取仓库中的内容
  getToken(content: Context,storeName: string = this.defaultStore){
    const store = preferences.getPreferencesSync(content, {name: storeName})
    return store.getSync(this.tokenKey, '')
  }
}

如上述代码演示中我定义的类,preferences使用起来很简单,大致分为三步

1.定义仓库

2.往仓库中存储,注意写入后要记得加上store.flush() //将缓存的Preferences实例中的数据存储到用户首选项的持久化文件中

3.读取仓库内容

还有注意的是它的同步方法和异步方法写的内容上有些区别,大家可以看看API它的同步和异步方法的区别

 

Harmony OS  NEXT   API12

本次就暂时介绍这么多

谢谢各位的观看,有错误不足的地方, 本人乐于接受各位的意见

posted on 2025-03-18 15:28  Bension  阅读(15)  评论(0)    收藏  举报