chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

harmony OS NEXT-通過用戶首選項(xiàng)實(shí)現(xiàn)數(shù)據(jù)持久化

程奕紅 ? 來源:jf_34770892 ? 作者:jf_34770892 ? 2025-04-29 16:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

# 鴻蒙通過用戶首選項(xiàng)實(shí)現(xiàn)數(shù)據(jù)持久化

## 1.1 場景介紹

用戶首選項(xiàng)為應(yīng)用提供Key-Value鍵值型的數(shù)據(jù)處理能力,支持應(yīng)用持久化輕量級數(shù)據(jù),并對其修改和查詢。當(dāng)用戶希望有一個全局唯一存儲的地方,可以采用用戶首選項(xiàng)來進(jìn)行存儲。Preferences會將該數(shù)據(jù)緩存在內(nèi)存中,當(dāng)用戶讀取的時(shí)候,能夠快速從內(nèi)存中獲取數(shù)據(jù),當(dāng)需要持久化時(shí)可以使用flush接口將內(nèi)存中的數(shù)據(jù)寫入持久化文件中。Preferences會隨著存放的數(shù)據(jù)量越多而導(dǎo)致應(yīng)用占用的內(nèi)存越大,因此,Preferences不適合存放過多的數(shù)據(jù),也不支持通過配置加密,適用的場景一般為應(yīng)用保存用戶的個性化設(shè)置(字體大小,是否開啟夜間模式)等。

## 2.1 運(yùn)作機(jī)制

用戶首選項(xiàng)為應(yīng)用提供Key-Value鍵值型的數(shù)據(jù)處理能力,支持應(yīng)用持久化輕量級數(shù)據(jù),并對其修改和查詢。當(dāng)用戶希望有一個全局唯一存儲的地方,可以采用用戶首選項(xiàng)來進(jìn)行存儲。Preferences會將該數(shù)據(jù)緩存在內(nèi)存中,當(dāng)用戶讀取的時(shí)候,能夠快速從內(nèi)存中獲取數(shù)據(jù),當(dāng)需要持久化時(shí)可以使用flush接口將內(nèi)存中的數(shù)據(jù)寫入持久化文件中。Preferences會隨著存放的數(shù)據(jù)量越多而導(dǎo)致應(yīng)用占用的內(nèi)存越大,因此,Preferences不適合存放過多的數(shù)據(jù),也不支持通過配置加密,適用的場景一般為應(yīng)用保存用戶的個性化設(shè)置(字體大小,是否開啟夜間模式)等。

* 每個key的value的長度最大為8kb
* 創(chuàng)建首選項(xiàng)-倉庫的概念-應(yīng)用可以有N個倉庫,一個倉庫中可以有N個key

![image-20250302113249158](https://i-blog.csdnimg.cn/img_convert/3eafa43421dce706c4c62eb946e349c6.png)

## 3.1 接口說明

| 接口名稱及方法簽名 | 描述 | 參數(shù) | 同步/異步類型 | 約束條件 |
| ------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------ | ------------- | ---------------------------------- |
| `getPreferencesSync(context: Context, options: Options): Preferences` | 獲取 `Preferences` 實(shí)例 | `context`: 上下文對象
`options`: 配置選項(xiàng) | 同步 | 存在對應(yīng)的異步接口 |
| `putSync(key: string, value: ValueType): void` | 寫入鍵值對(需調(diào)用 `flush` 持久化存儲) | `key`: 鍵名
`value`: 值(需滿足 `ValueType` 類型要求) | 同步 | 存在異步接口 |
| `hasSync(key: string): boolean` | 檢查是否包含指定鍵的鍵值對 | `key`: 鍵名 | 同步 | - 鍵名不能為空
- 存在異步接口 |
| `getSync(key: string, defValue: ValueType): ValueType` | 獲取鍵對應(yīng)的值(若為空或類型不匹配則返回 `defValue`) | `key`: 鍵名
`defValue`: 默認(rèn)值 | 同步 | 存在異步接口 |
| `deleteSync(key: string): void` | 刪除指定鍵的鍵值對 | `key`: 鍵名 | 同步 | 存在異步接口 |
| `flush(callback: AsyncCallback): void` | 將數(shù)據(jù)異步持久化到文件 | `callback`: 異步回調(diào) | 異步 | - |
| `on(type: 'change', callback: Callback): void` | 訂閱數(shù)據(jù)變更事件(在 `flush` 后觸發(fā)) | `type`: 事件類型(僅支持 `'change'`)
`callback`: 回調(diào)函數(shù)(參數(shù)為變更的 `key`) | - | - |
| `off(type: 'change', callback?: Callback): void` | 取消訂閱數(shù)據(jù)變更事件 | `type`: 事件類型(`'change'`)
`callback`: 可選回調(diào)函數(shù) | - | 若未指定 `callback` 則取消全部訂閱 |
| `deletePreferences(context: Context, options: Options, callback: AsyncCallback): void` | 從內(nèi)存移除實(shí)例并刪除持久化文件(若有) | `context`: 上下文對象
`options`: 配置選項(xiàng)
`callback`: 異步回調(diào) | 異步 | - |

## 4.1 開發(fā)步驟

### 1.導(dǎo)入@kit.ArkData模塊。

```ts
import { preferences } from "@kit.ArkData";
```

### 2.獲取preference實(shí)例,拿到倉庫

`getPreferenceSync`接受兩個參數(shù),其中一個參數(shù)是context,另一個參數(shù)是options

* `context`代表了用戶的上下文,是ability的能力級,也是ability的一個環(huán)境,這個東西如果想要獲取分兩種情況

1. 在ability中區(qū)獲取 在`onWindowStageCreate`寫入這行代碼即可

```ts
MyPreferenceClass.context = this.context
```

2. 在UI界面去拿

```ts
getContext(this)
```

* `options` 是傳遞給 `preferences.getPreferencesSync()` 的配置對象,用于定義存儲實(shí)例的倉庫名稱、安全模式等關(guān)鍵屬性

```ts
const store = preferences.getPreferencesSync(MyPreferenceClass.context||getContext(),{
//拿到該名稱的倉庫,拿不到就會給你創(chuàng)建該名稱的倉庫,類似數(shù)據(jù)庫
name:'infoStore'
})
return store
```

### 3.創(chuàng)建增刪改的方法

```ts
//2.寫入字段,持久化存儲
static async putStore(info:string){
const store = MyPreferenceClass.getStore()
store.putSync('info',info)
await store.flush()
}
//3.獲取數(shù)據(jù)
static getValue(){
const store = MyPreferenceClass.getStore()
const value = store.getSync('info','666666')
return value
}

//4.刪除數(shù)據(jù)
static async deleteValue(){
const store = MyPreferenceClass.getStore()
//如果不加上flush操作,只是在內(nèi)存中刪除,需要加上flush操作才能寫入磁盤!
store.deleteSync('info')
await store.flush()
}
//5.判斷數(shù)據(jù)是否存在
static judjeValue(val:string){
const store = MyPreferenceClass.getStore()
const value = store.hasSync(val)
return value
}
```

### 4.測試代碼

```ts
import { MyPreferenceClass } from './utils/MyPreferenceClass'

@Entry
@Component
struct Mytest {
// @State 實(shí)時(shí)更新
@State currentValue: string = '今天天氣真不錯!'
@State JudeValue: boolean = false

build() {
//初始化默認(rèn)值

Column({ space: 10 }) {
Text(this.currentValue)
Text(this.JudeValue + '')
Button('寫入數(shù)據(jù)')
.onClick(() => {
MyPreferenceClass.putStore('今天天氣并不好')
})
Button('展示數(shù)據(jù)')
.onClick(() => {
this.currentValue = MyPreferenceClass.getValue() as string
})
Button('刪除數(shù)據(jù)')
.onClick(() => {
MyPreferenceClass.deleteValue()
})
Button('是否展示該數(shù)據(jù)')
.onClick(() => {
this.JudeValue = MyPreferenceClass.judjeValue('info')
})
}
.height('100%')
.width('100%')

}
```



審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2740

    瀏覽量

    45026
  • Harmony
    +關(guān)注

    關(guān)注

    0

    文章

    108

    瀏覽量

    3410
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙OS開發(fā)實(shí)例:【工具類封裝-首選項(xiàng)本地存儲】

    **import dataPreferences from '@ohos.data.preferences'; import bundleManager from '@ohos.bundle.bundleManager';** 本地首選項(xiàng)數(shù)據(jù)的保存,利用key val
    的頭像 發(fā)表于 03-28 15:45 ?2562次閱讀
    鴻蒙<b class='flag-5'>OS</b>開發(fā)實(shí)例:【工具類封裝-<b class='flag-5'>首選項(xiàng)</b>本地存儲】

    HarmonyOS開發(fā)案例:【用戶首選項(xiàng)

    用戶首選項(xiàng)為應(yīng)用提供Key-Value鍵值型的數(shù)據(jù)處理能力,支持應(yīng)用持久輕量級數(shù)據(jù),常用于保存
    的頭像 發(fā)表于 04-18 15:34 ?1699次閱讀
    HarmonyOS開發(fā)案例:【<b class='flag-5'>用戶</b><b class='flag-5'>首選項(xiàng)</b>】

    HarmonyOS開發(fā)案例:【首選項(xiàng)

    基于HarmonyOS的首選項(xiàng)能力實(shí)現(xiàn)的一個簡單示例。
    的頭像 發(fā)表于 04-19 16:20 ?1937次閱讀
    HarmonyOS開發(fā)案例:【<b class='flag-5'>首選項(xiàng)</b>】

    如何設(shè)置Xilinx ISE首選項(xiàng)11.x 12.x的默認(rèn)值

    可能是一個新手問題,我們有一個配置允許不同版本的附加工具,如modelsim,synplicity。我們想知道是否有辦法告訴Xilinx默認(rèn)使用什么。具體來說,我們有興趣設(shè)置以下值: 首選項(xiàng)
    發(fā)表于 11-15 11:29

    查看首選項(xiàng)未保存, 如何保存設(shè)置?

    您好,我想把論壇中的帖子看成“平面閱讀模式”而不是“線程閱讀模式”。所以我轉(zhuǎn)到用戶控制面板,編輯配置文件,特性首選項(xiàng),查看首選項(xiàng),并將其設(shè)置為“平面”,然后單擊“保存配置文件”。如果我移動到其他
    發(fā)表于 09-11 12:08

    ESP8266/ARDUINO構(gòu)建H找不到首選項(xiàng)怎么解決?

    大家好!我對運(yùn)行 Arduino 核心的 ESP32 有一些扎實(shí)的經(jīng)驗(yàn),并且一直在使用首選項(xiàng)庫來存儲,你猜對了,首選項(xiàng),到該平臺上的 NVS。這是一個簡單而順利的過程。我正在嘗試將我的代碼移植到運(yùn)行
    發(fā)表于 02-21 07:44

    HarmonyOS數(shù)據(jù)管理與應(yīng)用數(shù)據(jù)持久(一)

    的形式存儲數(shù)據(jù),廣泛用于應(yīng)用中的關(guān)系型數(shù)據(jù)的處理,包括一系列的增、刪、改、查等接口,開發(fā)者也可以運(yùn)行自己定義的SQL語句來滿足復(fù)雜業(yè)務(wù)場景的需要。 三. 通過用戶
    發(fā)表于 11-01 16:27

    關(guān)于MPLAB Harmony中項(xiàng)目恢復(fù)和備份選項(xiàng)的具體介紹

    MPLAB Harmony專輯 - 第5集 - MPLAB Harmony中的項(xiàng)目恢復(fù)和備份選項(xiàng)
    的頭像 發(fā)表于 07-08 00:33 ?3216次閱讀

    redis持久機(jī)制和如何實(shí)現(xiàn)持久

    File)。 RDB是Redis默認(rèn)采用的持久方式,它通過在指定時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入到磁盤的二進(jìn)制文件中,實(shí)現(xiàn)
    的頭像 發(fā)表于 12-05 10:02 ?827次閱讀

    鴻蒙開發(fā)接口數(shù)據(jù)管理:【@ohos.data.preferences (首選項(xiàng))】

    首選項(xiàng)為應(yīng)用提供key-value鍵值型的數(shù)據(jù)處理能力,支持應(yīng)用持久輕量級數(shù)據(jù),并對其修改和查詢。數(shù)據(jù)
    的頭像 發(fā)表于 06-10 18:46 ?3038次閱讀

    harmony OS NEXT-基本介紹及DevcoStudiop基本使用

    #鴻蒙基本介紹及DevcoStudiop基本使用 1.認(rèn)識DevcoStudiop工作區(qū) 1.1認(rèn)識工作區(qū) 開發(fā)節(jié)奏: 通過左側(cè)目錄找到對應(yīng)的應(yīng)用文件,在編輯區(qū)進(jìn)行代碼編寫,在右側(cè)看預(yù)覽效果 快捷鍵
    的頭像 發(fā)表于 03-26 16:48 ?545次閱讀
    <b class='flag-5'>harmony</b> <b class='flag-5'>OS</b> <b class='flag-5'>NEXT-</b>基本介紹及DevcoStudiop基本使用

    harmony OS NEXT-雙向數(shù)據(jù)綁定MVVM以及$$語法糖介紹

    保持同步的機(jī)制,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),UI自動更新;反之,當(dāng)用于通過UI代碼操作修改數(shù)據(jù)時(shí),數(shù)據(jù)模型也會同步更新,這種機(jī)制簡化了開發(fā),減少了手動DOM或UI組件的代碼量,舉個簡單的例子,比
    的頭像 發(fā)表于 04-29 16:52 ?1017次閱讀

    harmony-utils之PreferencesUtil,首選項(xiàng)工具類

    harmony-utils之PreferencesUtil,首選項(xiàng)工具類 harmony-utils 簡介與說明 [harmony-utils] 一款功能豐富且極易上手的Harmony
    的頭像 發(fā)表于 07-03 11:42 ?250次閱讀

    harmony-utils之PreviewUtil,文件預(yù)覽工具類

    實(shí)用工具類,致力于助力開發(fā)者迅速構(gòu)建鴻蒙應(yīng)用。其封裝的工具涵蓋了APP、設(shè)備、屏幕、授權(quán)、通知、線程間通信、彈框、吐司、生物認(rèn)證、用戶首選項(xiàng)、拍照、相冊、掃碼、文件、日志、異常捕獲、字符、字符串、數(shù)字
    的頭像 發(fā)表于 07-03 11:40 ?276次閱讀

    harmony-utils之StrUtil,字符串工具類

    ,致力于助力開發(fā)者迅速構(gòu)建鴻蒙應(yīng)用。其封裝的工具涵蓋了APP、設(shè)備、屏幕、授權(quán)、通知、線程間通信、彈框、吐司、生物認(rèn)證、用戶首選項(xiàng)、拍照、相冊、掃碼、文件、日志、異常捕獲、字符、字符串、數(shù)字、集合
    的頭像 發(fā)表于 07-03 11:32 ?262次閱讀