日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

HarmonyOS之数据管理·轻量级偏好数据库的应用

發(fā)布時間:2024/5/21 数据库 114 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HarmonyOS之数据管理·轻量级偏好数据库的应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、簡介

① 基本概念
  • 輕量級偏好數(shù)據(jù)庫主要提供輕量級 Key-Value 操作,支持本地應用存儲少量數(shù)據(jù),數(shù)據(jù)存儲在本地文件中,同時也加載在內(nèi)存中的,所以訪問速度更快,效率更高。輕量級偏好數(shù)據(jù)庫屬于非關系型數(shù)據(jù)庫,不宜存儲大量數(shù)據(jù),經(jīng)常用于操作鍵值對形式數(shù)據(jù)的場景。
  • Key-Value 數(shù)據(jù)庫:一種以鍵值對存儲數(shù)據(jù)的一種數(shù)據(jù)庫,類似 Java 中的 map,Key 是關鍵字,Value 是值。
  • 非關系型數(shù)據(jù)庫:區(qū)別于關系數(shù)據(jù)庫,不保證遵循 ACID(Atomic、Consistency、Isolation 及 Durability)特性,不采用關系模型來組織數(shù)據(jù),數(shù)據(jù)之間無關系,擴展性好。
  • 偏好數(shù)據(jù):用戶經(jīng)常訪問和使用的數(shù)據(jù)。
② 運作機制
  • 本模塊提供偏好型數(shù)據(jù)庫的操作類,應用通過這些操作類完成數(shù)據(jù)庫操作。
  • 借助 DatabaseHelper API,應用可以將指定文件的內(nèi)容加載到 Preferences 實例,每個文件最多有一個 Preferences 實例,系統(tǒng)會通過靜態(tài)容器將該實例存儲在內(nèi)存中,直到應用主動從內(nèi)存中移除該實例或者刪除該文件。
  • 獲取到文件對應的 Preferences 實例后,應用可以借助 Preferences API,從 Preferences 實例中讀取數(shù)據(jù)或者將數(shù)據(jù)寫入 Preferences 實例,通過 flush 或者 flushSync 將 Preferences 實例持久化。
  • 輕量級偏好數(shù)據(jù)庫運作機制如下圖所示:

③ 使用限制
  • Key 鍵為 String 類型,要求非空且大小不超過 80 個字符。
  • 如果 Value 值為 String 類型,可以為空但是長度不超過 8192 個字符。
  • 存儲的數(shù)據(jù)量應該是輕量級的,建議存儲的數(shù)據(jù)不超過一萬條,否則會在內(nèi)存方面產(chǎn)生較大的開銷。
④ 應用場景
  • 輕量級偏好數(shù)據(jù)庫是輕量級存儲,主要用于保存應用的一些常用配置,并不適合存儲大量數(shù)據(jù)和頻繁改變數(shù)據(jù)的場景。用戶的數(shù)據(jù)保存在文件中,可以持久化的存儲在設備上。
  • 需要注意的是用戶訪問的實例包含文件所有數(shù)據(jù),并一直加載在設備的內(nèi)存中,并通過輕量級偏好數(shù)據(jù)庫的 API 完成數(shù)據(jù)操作。

二、輕量級偏好數(shù)據(jù)庫 API

  • 輕量級偏好數(shù)據(jù)庫向本地應用提供了操作偏好型數(shù)據(jù)庫的 API,支持本地應用讀寫少量數(shù)據(jù)及觀察數(shù)據(jù)變化。數(shù)據(jù)存儲形式為鍵值對,鍵的類型為字符串型,值的存儲數(shù)據(jù)類型包括整型、字符串型、布爾型、浮點型、長整型、字符串型 Set 集合。
① 創(chuàng)建數(shù)據(jù)庫
  • 通過數(shù)據(jù)庫操作的輔助類可以獲取到要操作的 Preferences 實例,用于進行數(shù)據(jù)庫的操作。
  • 輕量級偏好數(shù)據(jù)庫創(chuàng)建接口:
類名接口名描述
DatabaseHelperPreferences getPreferences(String name)獲取文件對應的Preferences單實例,用于數(shù)據(jù)操作
② 查詢數(shù)據(jù)
  • 通過調(diào)用 Get 系列的方法,可以查詢不同類型的數(shù)據(jù)。
  • 輕量級偏好數(shù)據(jù)庫查詢接口如下表所示:
類名接口名描述
Preferencesint getInt(String key, int defValue)獲取鍵對應的int類型的值
Preferencesfloat getFloat(String key, float defValue)獲取鍵對應的float類型的值
③ 插入數(shù)據(jù)
  • 通過 Put 系列的方法可以修改 Preferences 實例中的數(shù)據(jù),通過 flush 或者 flushSync 將 Preferences 實例持久化。
  • 輕量級偏好數(shù)據(jù)庫插入接口如下表所示:
類名接口名描述
PreferencesPreferences putInt(String key, int value)設置Preferences實例中鍵對應的int類型的值
PreferencesPreferences putString(String key, String value)設置Preferences實例中鍵對應的String類型的值
Preferencesvoid flush()將Preferences實例異步寫入文件
Preferencesboolean flushSync()將Preferences實例同步寫入文件
④ 觀察數(shù)據(jù)變化
  • 輕量級偏好數(shù)據(jù)庫還提供了一系列的接口變化回調(diào),用于觀察數(shù)據(jù)的變化。開發(fā)者可以通過重寫 onChange 方法來定義觀察者的行為。
  • 輕量級偏好數(shù)據(jù)庫接口變化回調(diào)如下表所示:
類名接口名描述
Preferencesvoid registerObserver(PreferencesObserver preferencesObserver)注冊觀察者,用于觀察數(shù)據(jù)變化
Preferencesvoid unRegisterObserver(PreferencesObserver preferencesObserver)注銷觀察者
Preferences.PreferencesObservervoid onChange(Preferences preferences, String key)觀察者的回調(diào)方法,任意數(shù)據(jù)變化都會回調(diào)該方法
⑦ 刪除數(shù)據(jù)文件
  • 通過調(diào)用以下兩種接口,可以刪除數(shù)據(jù)文件。
  • 輕量級偏好數(shù)據(jù)庫刪除接口如下表所示:
類名接口名描述
DatabaseHelperboolean deletePreferences(String name)刪除文件和文件對應的Preferences單實例
DatabaseHelpervoid removePreferencesFromCache(String name)刪除文件對應的Preferences單實例
⑧ 移動數(shù)據(jù)庫文件
  • 輕量級偏好數(shù)據(jù)庫移動接口如下所示:
類名接口名描述
DatabaseHelperboolean movePreferences(Context sourceContext, String sourceName, String targetName)移動數(shù)據(jù)庫文件

三、輕量級偏好數(shù)據(jù)庫的使用開發(fā)流程

  • 準備工作,導入對輕量級偏好數(shù)據(jù)庫 SDK 到開發(fā)環(huán)境。
  • 獲取 Preferences 實例,讀取指定文件,將數(shù)據(jù)加載到 Preferences 實例,用于數(shù)據(jù)操作。
DatabaseHelper databaseHelper = new DatabaseHelper(context); // context入?yún)㈩愋蜑閛hos.app.Context。String fileName = "name"; // fileName表示文件名,其取值不能為空,也不能包含路徑,默認存儲目錄可以通過context.getPreferencesDir()獲取。Preferences preferences = databaseHelper.getPreferences(fileName);
  • 從指定文件讀取數(shù)據(jù),首先獲取指定文件對應的 Preferences 實例,然后借助 Preferences API 讀取數(shù)據(jù)。java 接口讀取整型數(shù)據(jù):
int value = preferences.getInt("intKey", 0);
  • 將數(shù)據(jù)寫入指定文件,首先獲取指定文件對應的 Preferences 實例,然后借助 Preferences API 將數(shù)據(jù)寫入 Preferences 實例,通過 flush 或者 flushSync 將 Preferences 實例持久化:
    • 異步:
preferences.putInt("intKey", 3);preferences.putString("StringKey", "String value");preferences.flush();
    • 同步:
preferences.putInt("intKey", 3);preferences.putString("StringKey", "String value");preferences.flushSync();
  • 注冊觀察者:開發(fā)者可以向 Preferences 實例注冊觀察者,觀察者對象需實現(xiàn) Preferences.PreferencesObserver 接口,flushSync() 或 flush() 執(zhí)行后,該 Preferences 實例注冊的所有觀察者的 onChange() 方法都會被回調(diào),不再需要觀察者時請注銷。
private class PreferencesChangeCounter implements Preferences.PreferencesObserver {final AtomicInteger notifyTimes = new AtomicInteger(0);@Override public void onChange(Preferences preferences, String key) {if ("intKey".equals(key)) {notifyTimes.incrementAndGet(); } }}// 向preferences實例注冊觀察者PreferencesChangeCounter counter = new PreferencesChangeCounter();preferences.registerObserver(counter);// 修改數(shù)據(jù)preferences.putInt("intKey", 3);boolean result = preferences.flushSync();// 修改數(shù)據(jù)后,onChange方法會被回調(diào),notifyTimes == 1int notifyTimes = counter.notifyTimes.intValue();// 向preferences實例注銷觀察者preferences.unRegisterObserver(counter);
  • 移除 Preferences 實例:從內(nèi)存中移除指定文件對應的 Preferences 單實例。移除 Preferences 單實例時,應用不允許再使用該實例進行數(shù)據(jù)操作,否則會出現(xiàn)數(shù)據(jù)一致性問題。
DatabaseHelper databaseHelper = new DatabaseHelper(context);String fileName = "name"; // fileName表示文件名,其取值不能為空,也不能包含路徑。databaseHelper.removePreferencesFromCache(fileName);
  • 刪除指定文件:從內(nèi)存中移除指定文件對應的 Preferences 單實例,并刪除指定文件及其備份文件、損壞文件。刪除指定文件時,應用不允許再使用該實例進行數(shù)據(jù)操作,否則會出現(xiàn)數(shù)據(jù)一致性問題。
DatabaseHelper databaseHelper = new DatabaseHelper(context);String fileName = "name"; // fileName表示文件名,其取值不能為空,也不能包含路徑。boolean result = databaseHelper.deletePreferences(fileName);
  • 移動指定文件:從源路徑移動文件到目標路徑。移動文件時,應用不允許再操作該文件數(shù)據(jù),否則會出現(xiàn)數(shù)據(jù)一致性問題。

四、完整示例

  • HarmonyOS之通過 Preferences 創(chuàng)建、刪除、更新和查詢應用程序偏好數(shù)據(jù)實現(xiàn)登錄頁面偏好數(shù)據(jù)存取及主頁面背景色偏好數(shù)據(jù)存取。
與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的HarmonyOS之数据管理·轻量级偏好数据库的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 手机看片欧美 | 刘亦菲一区二区三区免费看 | 卡通动漫精品一区二区三区 | 国产美女自慰在线观看 | 欧美aa | 欧美一线天 | 91精品在线看 | 老司机深夜福利在线观看 | 欧美天天干 | 国产成人av影院 | 国产无遮挡又黄又爽又色 | 精品一区免费 | 亚洲国产欧美自拍 | 蜜臀视频一区二区三区 | 三年中文在线观看中文版 | 日本高清免费视频 | 激情五月色播五月 | 成人黄色小视频 | 91亚洲精品一区二区乱码 | av新天堂 | 久久无码性爱视频 | 全部免费毛片在线播放高潮 | 人人妻人人澡人人爽人人dvd | 午夜免费播放观看在线视频 | 亚洲人精品午夜射精日韩 | av久操| 国产美女永久免费无遮挡 | 一级aaaa毛片| 激情中文字幕 | 青青草狠狠操 | 成人福利网 | 你懂的在线播放 | 日韩精品一区二区三区在线视频 | 免费视频久久久 | 韩国三级hd两男一女 | 男人的天堂在线 | 国产亚洲欧美日韩精品一区二区三区 | 一区二区三区免费在线 | 日韩少妇毛片 | 日本黄视频在线观看 | 亚洲欧洲综合 | 久草手机在线 | 精品第一页 | 国产精品人人人人 | 色九月婷婷 | 国产成人久久77777精品 | 日韩在线免费 | 69人妻精品久久无人专区 | 国产在线观看免费视频软件 | 亚洲a网| 大奶子情人 | 欧美a∨亚洲欧美亚洲 | 在线观看污网站 | 久草国产精品 | 三区在线 | 手机看片日韩久久 | 国产资源视频 | 日本系列第一页 | 91精品国产综合久久香蕉 | 亚洲插插| 无码人妻一区二区三区线 | 打美女白嫩屁屁网站 | 国产精品99精品久久免费 | 久久国产这里只有精品 | 中国黄色免费网站 | 国产日韩精品一区二区三区在线 | 亚洲在线看片 | 国产精品久久久久久久久岛 | 911成人网 | 日韩 欧美 国产 综合 | 手机亚洲第一页 | 日本熟妇毛茸茸丰满 | 日韩高清在线观看一区 | 337p嫩模大胆色肉噜噜噜 | 国语对白做受69按摩 | 国产成人精品一区二区在线观看 | 一区二区91 | 欧美在线一区二区三区四区 | 日本久久片 | 国产精品视频一区二区三区不卡 | 亚洲成人伦理 | 99re这里只有精品在线观看 | 婷婷的五月 | 国产农村妇女毛片精品久久麻豆 | 性xxxx狂欢老少配o | 毛片毛片毛片毛片毛片毛片 | 99久久久久成人国产免费 | 国产午夜三级一区二区三 | 欧美高清精品 | 日本aaaa| 久久久久人妻一区精品色欧美 | 操你啦免费视频 | 高清不卡一区 | 成人mv| 欧美日韩精品亚洲精品 | 91麻豆一区二区 | 色午夜视频 | 五十路在线观看 | 国产人妻一区二区三区四区五区六 |