国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS鴻蒙應用開發(fā)——數據持久化Preferences

這篇具有很好參考價值的文章主要介紹了HarmonyOS鴻蒙應用開發(fā)——數據持久化Preferences。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數據持久化簡述

數據持久化就是將內存數據通過文件或者數據庫的方式保存到設備中。HarmonyOS提供兩兩種持久化方案:

  • Preferences:主要用于保存一些配置信息,是通過文本的形式存儲的,在使用中會將文本中的數據全量加載到內存中,不太適合存儲大量數據的場景。
  • 數據庫:分為兩種,一種是非關系型數據庫,數據是鍵值對的形式存儲;另外一種事關系型數據庫,數據是行和列的形式存儲,提供一個系列的增刪改查等SQL操作,適合數據復雜的場景,比如聊天會話記錄等等。

基本使用與封裝

Preferences提供了獲取實例、讀、取、刪對應操作的方法:

  • getPreferences(context,name):獲取Preferences實例,name是存儲的文件名;
  • get(k):通過key獲取value值;
  • getAll():獲取文件所有的值;
  • put(k,v):添加值,同一個key會將之前的值覆蓋掉,需要通過flush()刷新到文件中;
  • delete(k):通過key刪除對應的value值;
  • clear():刪除所有的存儲值。

注意:以上方法都是異步的。

通常會在EntryAbility#onCreate()方法中創(chuàng)建實例,其中context便是EntryAbility的上下文,獲取preferences 實例就可以對數據增刪改查操作。

// 導入包
import dataPreferences from '@ohos.data.preferences'
// 獲取實例
let preferences = dataPreferences.getPreferences(context, this.preferencesName)

下面對preferences 進行封裝,基本思路:
在獲取preferences實例后會將其保存單例中,這個單例是GlobalContext,方便后期可以通過單例直接獲取實例;由于get()返回值類型是不確定性,定義一個聯(lián)合類型的別名ValueType 來接收。

const TAG = "PreferencesUtils"
// 默認文件名,可以在構造函數進行修改
const PREFERENCES_NAME = 'yiPreferences'
const KEY_PREFERENCES = "preferences"
type ValueType = number | string | boolean | Array<number> | Array<string> | Array<boolean>;

export class PreferencesUtils{
  // preferences的文件名
  private preferencesName: string = PREFERENCES_NAME
  // 用于獲取preferences實例的key值,保存到單例中
  private keyPreferences: string = KEY_PREFERENCES

  constructor(name: string = PREFERENCES_NAME, keyP: string = KEY_PREFERENCES) {
    this.preferencesName = name
    this.keyPreferences = keyP
  }

  createPreferences(context: Context): Promise<dataPreferences.Preferences> {
    let preferences = dataPreferences.getPreferences(context, this.preferencesName)
    GlobalContext.getContext().setObject(this.keyPreferences, preferences)
    return preferences
  }

  getPreferences(): Promise<dataPreferences.Preferences> {
    return GlobalContext.getContext().getObject(KEY_PREFERENCES) as Promise<dataPreferences.Preferences>
  }

  async get(key: string, def?: ValueType): Promise<ValueType> {
   return (await this.getPreferences()).get(key, def)
  }

  async getAll(): Promise<Object> {
    let  preferences = await this.getPreferences()
    return preferences.getAll()
  }

  async put(key: string, value: ValueType): Promise<void> {
    let promise = await this.getPreferences().then(async (p) => {
      await p.put(key, value)
      await p.flush();
    }).catch((err)=>{
      Logger.d(TAG, err)
    })
    return promise
  }



  async delete(key: string): Promise<void> {
    return (await this.getPreferences()).delete(key).finally(async () => {
      (await this.getPreferences()).flush()
    })
  }

  async clear(): Promise<void> {
    return (await this.getPreferences()).clear().finally(async () => {
      (await this.getPreferences()).flush()
    })
  }

}

export default new PreferencesUtils()

EntryAbility#onCreate()方法初始化:

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    PreferencesUtils.createPreferences(this.context)
  }
}

GlobalContext

export default class GlobalContext {
  private constructor() { }
  private static instance: GlobalContext;
  private _objects = new Map<string, Object>();

  public static getContext(): GlobalContext {
    if (!GlobalContext.instance) {
      GlobalContext.instance = new GlobalContext();
    }
    return GlobalContext.instance;
  }

  getObject(value: string): Object | undefined {
    return this._objects.get(value);
  }

  setObject(key: string, objectClass: Object): void {
    this._objects.set(key, objectClass);
  }
}

測試用例

HarmonyOS鴻蒙應用開發(fā)——數據持久化Preferences,HarmonyOS應用開發(fā),harmonyos,華為,數據持久化,Preferences
通過異步asyncawait來直接獲取操作結果,也可以在then方法回調中獲取結果。文章來源地址http://www.zghlxwxcb.cn/news/detail-752344.html

@Component
@Entry
struct PreferencesPage {
  @State text: string = ""
  aboutToAppear() {
    PreferencesUtils.put("username", "Harden")
    PreferencesUtils.put("age", 28)
    PreferencesUtils.put("isStaff", true)
  }
  build() {
    Column() {
      Text(this.text)
        .width('100%')
        .height(60)
      Row() {
        Button("get")
          .onClick(async () => {
            this.text = await PreferencesUtils.get('username') as string
          })
        Button("getAll")
          .onClick(async () => {
            this.getAll()
          })
        Button("put")
          .onClick(async () => {
            await PreferencesUtils.put("username", "Kobe")
            await  PreferencesUtils.put("age", 28)
            await PreferencesUtils.put("isStaff", false)
            this.getAll()
          })
        Button("delete")
          .onClick(async () => {
            await PreferencesUtils.delete("isStaff")
            this.getAll()
          })
        Button("clear")
          .onClick(async () => {
            await PreferencesUtils.clear()
            this.getAll()
          })
      }
      .width('100%')
      .justifyContent(FlexAlign.Center)
    }
  }

  async getAll() {
    let v = await PreferencesUtils.getAll() as Object
    this.text = JSON.stringify(v)
  }
}

參考

  • https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101667367018821971?ha_linker=eyJ0cyI6MTcwMjM5NzEzNzM3MywiaWQiOiI4MmM3ZTI1MmFmMDJlMDZiODBmOGU1ZDM5ZTI5YmMyOCJ9

到了這里,關于HarmonyOS鴻蒙應用開發(fā)——數據持久化Preferences的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • HarmonyOS 數據管理與應用數據持久化(二)

    HarmonyOS 數據管理與應用數據持久化(二)

    鍵值型數據庫存儲鍵值對形式的數據,當需要存儲的數據沒有復雜的關系模型,比如存儲商品名稱及對應價格、員工工號及今日是否已出勤等,由于數據復雜度低,更容易兼容不同數據庫版本和設備類型,因此推薦使用鍵值型數據庫持久化此類數據。 ●?設備協(xié)同數據庫,針

    2024年02月05日
    瀏覽(17)
  • 鴻蒙應用開發(fā)嘗鮮:初識HarmonyOS

    鴻蒙應用開發(fā)嘗鮮:初識HarmonyOS

    來源:華為官方網站 : https://developer.huawei.com/ 相信大家對鴻蒙應用開發(fā)也不在陌生,很多身處互聯(lián)網行業(yè)或者不了解的人們現在也一定都聽說過華為鴻蒙.這里我將不再說廢話,直接步入正題 HarmonyOS應用開發(fā)采用的是ArkTS語言,ArkTS是在TypeScript(簡稱TS)基礎上的拓展,而TS又是JavaScrip

    2024年02月02日
    瀏覽(35)
  • 鴻蒙HarmonyOS應用開發(fā)初體驗

    鴻蒙HarmonyOS應用開發(fā)初體驗

    最近華為發(fā)布mt60新機火了,作為一名移動開發(fā)程序員,對鴻蒙系統(tǒng)開發(fā)移動端就很感興趣了。 開發(fā)工具:HUAWEI DevEco Studio和SDK下載和升級 | HarmonyOS開發(fā)者 下載完后按默認安裝就可以了,界面跟AS很類似,之前我jdk環(huán)境配置就不在配置了,不懂的可以百度下很多教程。 這是基

    2024年02月09日
    瀏覽(27)
  • 【HarmonyOS】開發(fā)一個可以看小姐姐的鴻蒙應用 鴻蒙開發(fā)入門

    【HarmonyOS】開發(fā)一個可以看小姐姐的鴻蒙應用 鴻蒙開發(fā)入門

    先整張效果圖,丑點是丑點,但可以用,買不起鴻蒙系統(tǒng)手機的我,只配用虛擬機。 要說目前最火的手機操作系統(tǒng),要我來看的話那必然是鴻蒙無疑。16號剛剛結束了第五次鴻蒙內測,在看到這次的內測名單之后,居然有970的機器,這是不是說明俺這手里奮戰(zhàn)了三年的榮耀

    2024年02月15日
    瀏覽(28)
  • 【HarmonyOS】鴻蒙應用開發(fā)基礎認證題目

    【HarmonyOS】鴻蒙應用開發(fā)基礎認證題目

    【HarmonyOS】鴻蒙應用開發(fā)基礎認證題目; 隨著鴻蒙系統(tǒng)的不斷發(fā)展,前不久,華為宣布了重磅消息,HarmonyOS next 開發(fā)者版本會在明年(2024)開放,并不再支持Android應用!這也意味著,移動端開發(fā)者今后又多了一個適配平臺,也到了必須學的時候了。 目前已知一線大廠均已開

    2024年02月04日
    瀏覽(86)
  • 【鴻蒙開發(fā)】HarmonyOS應用開發(fā)者基礎認證題庫

    【鴻蒙開發(fā)】HarmonyOS應用開發(fā)者基礎認證題庫

    華為開發(fā)者學堂 ? 1、考試需實名認證,請在考前于個人主頁→個人信息→基本信息→進行實名認證,否則考試通過無法獲取專業(yè)證書; 2、每個帳號每月有3次考試機會,次月重置考試次數。做題過程中請認真對待,避免考試次數浪費; 3、考試時長為1小時,請合理分配做題

    2024年03月09日
    瀏覽(98)
  • HarmonyOS鴻蒙原生應用開發(fā)設計- 圖標庫

    HarmonyOS鴻蒙原生應用開發(fā)設計- 圖標庫

    HarmonyOS設計文檔中,為大家提供了獨特的圖標庫,開發(fā)者可以根據需要直接引用。 圖標庫可以分為雙色圖標、填充圖標、線性圖標。具體分為 鍵盤、箭頭、連接狀態(tài)、媒體、人、設備、索引、通信、文件、物體與工具等。 整體分類 開發(fā)者直接使用官方提供的圖標庫內容,既

    2024年02月07日
    瀏覽(104)
  • 鴻蒙應用開發(fā)學習路線(OpenHarmony/HarmonyOS)

    鴻蒙應用開發(fā)學習路線(OpenHarmony/HarmonyOS)

    作者:堅果 團隊:堅果派 公眾號:“大前端之旅” 潤開鴻技術專家,華為HDE,InfoQ簽約作者,OpenHarmony布道師,擅長HarmonyOS應用開發(fā)、熟悉服務卡片開發(fā),在“戰(zhàn)碼先鋒”活動中作為大隊長,累計培養(yǎng)三個小隊長,帶領100+隊員完成Pr的提交合入。 歡迎通過主頁或者私信聯(lián)系

    2024年02月15日
    瀏覽(97)
  • 鴻蒙(HarmonyOS)應用開發(fā)——構建頁面(題目答案)

    1.在Column容器中的子組件默認是按照從上到下的垂直方向布局的,其主軸的方向是垂直方向,在Row容器中的組件默認是按照從左到右的水平方向布局的,其主軸的方向是水平方向。 正確(True) 2.List容器可以沿水平方向排列,也可以沿垂直方向排列。 正確(True) 3.當Tabs組件的參數

    2024年01月20日
    瀏覽(36)
  • HarmonyOS鴻蒙原生應用開發(fā)設計- 流轉圖標

    HarmonyOS鴻蒙原生應用開發(fā)設計- 流轉圖標

    HarmonyOS設計文檔中,為大家提供了獨特的流轉圖標,開發(fā)者可以根據需要直接引用。 開發(fā)者直接使用官方提供的流轉圖標內容,既可以符合HarmonyOS原生應用的開發(fā)上架運營規(guī)范,又可以防止使用別人的圖標侵權意外情況等,減少自主創(chuàng)作流轉圖標的工作量。當然,如果有個性

    2024年02月07日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包