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

HarmonyOS學(xué)習(xí)路之開發(fā)篇—數(shù)據(jù)管理(輕量級數(shù)據(jù)存儲)

這篇具有很好參考價值的文章主要介紹了HarmonyOS學(xué)習(xí)路之開發(fā)篇—數(shù)據(jù)管理(輕量級數(shù)據(jù)存儲)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

輕量級數(shù)據(jù)存儲概述

輕量級數(shù)據(jù)存儲適用于對Key-Value結(jié)構(gòu)的數(shù)據(jù)進(jìn)行存取和持久化操作。應(yīng)用獲取某個輕量級存儲對象后,該存儲對象中的數(shù)據(jù)將會被緩存在內(nèi)存中,以便應(yīng)用獲得更快的數(shù)據(jù)存取速度。應(yīng)用也可以將緩存的數(shù)據(jù)再次寫回文本文件中進(jìn)行持久化存儲,由于文件讀寫將產(chǎn)生不可避免的系統(tǒng)資源開銷,建議應(yīng)用減少對持久化文件的讀寫頻率。

基本概念

  • Key-Value數(shù)據(jù)結(jié)構(gòu)

    一種鍵值結(jié)構(gòu)數(shù)據(jù)類型。Key是不重復(fù)的關(guān)鍵字,Value是數(shù)據(jù)值。

  • 非關(guān)系型數(shù)據(jù)庫

    區(qū)別于關(guān)系數(shù)據(jù)庫,不保證遵循ACID(Atomic、Consistency、Isolation及Durability)特性,不采用關(guān)系模型來組織數(shù)據(jù),數(shù)據(jù)之間無關(guān)系。

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

  1. 應(yīng)用通過指定Preferences文件將其中的數(shù)據(jù)加載到Preferences實(shí)例,系統(tǒng)會通過靜態(tài)容器將該實(shí)例存儲在內(nèi)存中,同一應(yīng)用或進(jìn)程中每個文件僅存在一個Preferences實(shí)例,直到應(yīng)用主動從內(nèi)存中移除該實(shí)例或者刪除該P(yáng)references文件。
  2. 應(yīng)用獲取到Preferences文件對應(yīng)的實(shí)例后,可以從Preferences實(shí)例中讀取數(shù)據(jù),或者將數(shù)據(jù)存入Preferences實(shí)例中。通過調(diào)用flush或者flushSync方法可以將Preferences實(shí)例中的數(shù)據(jù)回寫到文件里。

圖1?輕量級數(shù)據(jù)存儲運(yùn)作機(jī)制

HarmonyOS學(xué)習(xí)路之開發(fā)篇—數(shù)據(jù)管理(輕量級數(shù)據(jù)存儲),HarmonyOS 學(xué)習(xí),學(xué)習(xí),輕量級存儲,Preferences,harmonyos,DatabaseHelper

?

約束與限制

  • 因Preferences實(shí)例會加載到內(nèi)存中,建議存儲的數(shù)據(jù)不超過一萬條,并及時清理不再使用的實(shí)例,以便減少非內(nèi)存開銷。
  • 數(shù)據(jù)中的key為string類型,要求非空且字符長度不超過80個。
  • 當(dāng)數(shù)據(jù)中的value為string類型時,允許為空,字符長度不超過8192個。
  • 當(dāng)value值為字符串型Set集合類型時,要求集合元素非空且字符長度不超過8192個。

輕量級數(shù)據(jù)存儲開發(fā)

場景介紹

輕量級數(shù)據(jù)存儲功能通常用于保存應(yīng)用的一些常用配置信息,并不適合需要存儲大量數(shù)據(jù)和頻繁改變數(shù)據(jù)的場景。應(yīng)用的數(shù)據(jù)保存在文件中,這些文件可以持久化地存儲在設(shè)備上。需要注意的是,應(yīng)用訪問的實(shí)例包含文件所有數(shù)據(jù),這些數(shù)據(jù)會一直加載在設(shè)備的內(nèi)存中,直到應(yīng)用主動從內(nèi)存中將其移除前,應(yīng)用可以通過Preferences的API進(jìn)行數(shù)據(jù)操作。

接口說明

輕量級存儲為應(yīng)用提供key-value鍵值型的文件數(shù)據(jù)處理能力,支持應(yīng)用對數(shù)據(jù)進(jìn)行輕量級存儲及查詢。數(shù)據(jù)存儲形式為鍵值對,鍵的類型為字符串型,值的存儲數(shù)據(jù)類型包括整型、字符串型、布爾型、浮點(diǎn)型、長整型、字符串型Set集合。

創(chuàng)建存儲實(shí)例

讀取指定文件,將數(shù)據(jù)加載到Preferences實(shí)例,即可創(chuàng)建一個存儲實(shí)例,用于數(shù)據(jù)操作。

表1?輕量級數(shù)據(jù)存儲實(shí)例創(chuàng)建接口

類名

接口名

描述

DatabaseHelper

DatabaseHelper(Context context)

DatabaseHelper是數(shù)據(jù)操作的輔助類。

DatabaseHelper

Preferences getPreferences(String name)

獲取數(shù)據(jù)存儲文件對應(yīng)的Preferences單實(shí)例,用于數(shù)據(jù)操作。數(shù)據(jù)文件存放在由上下文指定的目錄里,該路徑會因指定不同的上下文存在差異。

存入數(shù)據(jù)

通過Put系列方法,可以增加或修改Preferences實(shí)例中的數(shù)據(jù)。

表2?輕量級偏好數(shù)據(jù)存入接口

類名

接口名

描述

Preferences

Preferences putInt(String key, int value)

設(shè)置Preferences實(shí)例中鍵對應(yīng)的int類型的值。

Preferences

Preferences putString(String key, String value)

設(shè)置Preferences實(shí)例中鍵對應(yīng)的String類型的值。

讀取數(shù)據(jù)

通過調(diào)用Get系列方法,可以讀取Preferences中的數(shù)據(jù)。

表3?輕量級數(shù)據(jù)讀取接口

類名

接口名

描述

Preferences

int getInt(String key, int defValue)

獲取鍵對應(yīng)的int類型的值。

Preferences

float getFloat(String key, float defValue)

獲取鍵對應(yīng)的float類型的值。

數(shù)據(jù)持久化

通過執(zhí)行flush方法,應(yīng)用可以將緩存的數(shù)據(jù)再次寫回文本文件中進(jìn)行持久化存儲。

表4?輕量級數(shù)據(jù)持久化接口

類名

接口名

描述

Preferences

void flush()

將Preferences實(shí)例異步寫入文件。

Preferences

boolean flushSync()

將Preferences實(shí)例同步寫入文件。

訂閱數(shù)據(jù)變化

訂閱數(shù)據(jù)變化需要指定PreferencesObserver作為回調(diào)方法。訂閱的key的值發(fā)生變更后,當(dāng)執(zhí)行flush方法時,PreferencesObserver被回調(diào)。

表5?輕量級數(shù)據(jù)變化訂閱接口

類名

接口名

描述

Preferences

void registerObserver(PreferencesObserver preferencesObserver)

訂閱數(shù)據(jù)變化。

Preferences

void unRegisterObserver(PreferencesObserver preferencesObserver)

注銷訂閱。

Preferences.PreferencesObserver

void onChange(Preferences preferences, String key)

訂閱者的回調(diào)方法,數(shù)據(jù)變化會觸發(fā)回調(diào)該方法。

刪除數(shù)據(jù)文件

通過調(diào)用以下兩種接口,可以刪除數(shù)據(jù)實(shí)例或?qū)?yīng)的文件。

表6?輕量級數(shù)據(jù)存儲刪除接口

類名

接口名

描述

DatabaseHelper

boolean deletePreferences(String name)

將Preferences實(shí)例從內(nèi)存中移除,同時刪除其在設(shè)備上的持久化文件。

DatabaseHelper

void removePreferencesFromCache(String name)

僅將Preferences實(shí)例從內(nèi)存中移除。

移動數(shù)據(jù)文件

表7?輕量級數(shù)據(jù)存儲移動接口

類名

接口名

描述

DatabaseHelper

boolean movePreferences(Context sourceContext, String sourceName, String targetName)

移動數(shù)據(jù)持久化文件。

開發(fā)步驟

獲取Preferences實(shí)例。

讀取指定文件,將數(shù)據(jù)加載到Preferences實(shí)例,用于數(shù)據(jù)操作。

Context context = getContext(); // 數(shù)據(jù)文件存儲路徑:/data/data/{PackageName}/{AbilityName}/preferences。
// Context context = getApplicationContext(); // 數(shù)據(jù)文件存儲路徑:/data/data/{PackageName}/preferences。
DatabaseHelper databaseHelper = new DatabaseHelper(context); // context入?yún)㈩愋蜑閛hos.app.Context。
String fileName = "test_pref"; // fileName表示文件名,其取值不能為空,也不能包含路徑,默認(rèn)存儲目錄可以通過context.getPreferencesDir()獲取。
Preferences preferences = databaseHelper.getPreferences(fileName);

讀取數(shù)據(jù)。

使用Preferences get方法讀取數(shù)據(jù)。

preferences.putInt("intKey", 3);
preferences.putString("StringKey", "String value");

數(shù)據(jù)持久化。

應(yīng)用存入數(shù)據(jù)到Preferences實(shí)例后,可以通過flush或者flushSync方法將Preferences實(shí)例回寫到文件中。

preferences.flush();  // 異步方法
bool result = preferences.flushSync();  // 同步方法

訂閱數(shù)據(jù)變化。

應(yīng)用訂閱數(shù)據(jù)變化需要指定PreferencesObserver作為回調(diào)方法。訂閱的key的值發(fā)生變更后,當(dāng)執(zhí)行flush方法時,PreferencesObserver被觸發(fā)回調(diào)。不再需要PreferencesObserver時請注銷。

private class PreferencesObserverImpl implements Preferences.PreferencesObserver {
   
    @Override    
    public void onChange(Preferences preferences, String key) {
        if ("intKey".equals(key)) {
           HiLog.info(LABLE, "Change Received:[key=value]");        
        }    
    }
}

// 訂閱數(shù)據(jù)變化
PreferencesObserverImpl observer = new PreferencesObserverImpl();
preferences.registerObserver(observer);
// 修改數(shù)據(jù)
preferences.putInt("intKey", 3);
// 觸發(fā)訂閱者回調(diào)方法執(zhí)行
preferences.flush();
// 修改數(shù)據(jù)后,observer的onChange方法會被回調(diào)
// 注銷訂閱
preferences.unRegisterObserver(observer);

移除Preferences實(shí)例。

從內(nèi)存中移除指定文件對應(yīng)的Preferences單實(shí)例。移除Preferences單實(shí)例時,應(yīng)用不允許再使用該實(shí)例進(jìn)行數(shù)據(jù)操作,否則會出現(xiàn)數(shù)據(jù)一致性問題。

DatabaseHelper databaseHelper = new DatabaseHelper(context);
String fileName = "name"; // fileName表示文件名,其取值不能為空,也不能包含路徑。
databaseHelper.removePreferencesFromCache(fileName);

刪除指定文件。

使用deletePreferences方法從內(nèi)存中移除指定文件對應(yīng)的Preferences單實(shí)例,并刪除指定文件及其備份文件、損壞文件。刪除指定文件時,應(yīng)用不允許再使用該實(shí)例進(jìn)行數(shù)據(jù)操作,否則會出現(xiàn)數(shù)據(jù)一致性問題。刪除后,數(shù)據(jù)及文件將不可恢復(fù)。

DatabaseHelper databaseHelper = new DatabaseHelper(context);
String fileName = "name"; // fileName表示文件名,其取值不能為空,也不能包含路徑。
boolean result = databaseHelper.deletePreferences(fileName);

移動指定文件。

從源路徑移動文件到目標(biāo)路徑。移動文件時,應(yīng)用不允許再操作該文件數(shù)據(jù),否則會出現(xiàn)數(shù)據(jù)一致性問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-540172.html

Context targetContext = getContext();
DatabaseHelper databaseHelper = new DatabaseHelper(targetContext);
String srcFile = "srcFile"; // srcFile表示源文件名或者源文件的絕對路徑,不能為相對路徑,其取值不能為空。當(dāng)srcFile只傳入文件名時,srcContext不能為空。
String targetFile = "targetFile"; // targetFile表示目標(biāo)文件名,其取值不能為空,也不能包含路徑。
Context srcContext = getApplicationContext();
boolean result = databaseHelper.movePreferences(srcContext, srcFile, targetFile);

到了這里,關(guān)于HarmonyOS學(xué)習(xí)路之開發(fā)篇—數(shù)據(jù)管理(輕量級數(shù)據(jù)存儲)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(狀態(tài)管理 二)

    HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(狀態(tài)管理 二)

    @Prop裝飾的變量可以和父組件建立單向的同步關(guān)系。@Prop裝飾的變量是可變的,但是變化不會同步回其父組件。 @Prop裝飾的變量和父組件建立單向的同步關(guān)系: @Prop變量允許在本地修改,但修改后的變化不會同步回父組件。 當(dāng)父組件中的數(shù)據(jù)源更改時,與之相關(guān)的@Prop裝飾的變

    2024年02月14日
    瀏覽(46)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—設(shè)備管理(設(shè)備標(biāo)識符)

    定義 網(wǎng)絡(luò)設(shè)備節(jié)點(diǎn)通信標(biāo)識符,是分布式軟總線提供的一種非永久性標(biāo)識符。NetworkID基于Java原生的UUID接口隨機(jī)生成,長度為32字節(jié),使用十六進(jìn)制表示。主要用于業(yè)務(wù)調(diào)用分布式能力時,標(biāo)識分布式網(wǎng)絡(luò)內(nèi)的設(shè)備節(jié)點(diǎn)。 NetworkID 舉例: 6B97BC8F6F85A2A1A6E0E262111F42D6A8541CBFF6CAF688F

    2024年02月13日
    瀏覽(69)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—設(shè)備管理(控制類小器件)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—設(shè)備管理(控制類小器件)

    控制類小器件指的是設(shè)備上的LED燈和振動器。其中,LED燈主要用作指示(如充電狀態(tài))、閃爍功能(如三色燈)等;振動器主要用于鬧鐘、開關(guān)機(jī)振動、來電振動等場景。 控制類小器件主要包含以下四個模塊:控制類小器件API、控制類小器件Framework、控制類小器件Service、H

    2024年02月12日
    瀏覽(14)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—流轉(zhuǎn)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—流轉(zhuǎn)

    隨著全場景多設(shè)備生活方式的不斷深入,用戶擁有的設(shè)備越來越多,每個設(shè)備都能在適合的場景下提供良好的體驗(yàn),例如:手表可以提供及時的信息查看能力,電視可以帶來沉浸的觀影體驗(yàn)。但是,每個設(shè)備也有使用場景的局限,例如:在電視上輸入文本相對手機(jī)來說是非常

    2024年02月15日
    瀏覽(95)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—AI功能開發(fā)(分詞)

    隨著信息技術(shù)的發(fā)展,網(wǎng)絡(luò)中的信息量成幾何級增長逐步成為當(dāng)今社會的主要特征。準(zhǔn)確提取文本關(guān)鍵信息,是搜索引擎等領(lǐng)域的技術(shù)基礎(chǔ),而分詞作為文本信息提取的第一步則尤為重要。 分詞作為自然語言處理領(lǐng)域的基礎(chǔ)研究,衍生出各類不同的文本處理相關(guān)應(yīng)用。 分詞

    2024年02月11日
    瀏覽(94)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—AI功能開發(fā)(實(shí)體識別)

    實(shí)體識別能夠從自然語言中提取出具有特定意義的實(shí)體,并在此基礎(chǔ)上完成搜索等一系列相關(guān)操作及功能。 實(shí)體識別覆蓋范圍大,能夠滿足日常開發(fā)中對實(shí)體識別的需求,讓應(yīng)用體驗(yàn)更好。識別準(zhǔn)確率高,能夠準(zhǔn)確地提取到實(shí)體信息,對應(yīng)用基于信息的后續(xù)服務(wù)形成關(guān)鍵影響

    2024年02月11日
    瀏覽(501)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—AI功能開發(fā)(語音播報)

    語音播報(Text to Speech,下文簡稱TTS),基于華為智慧引擎(HUAWEI HiAI Engine)中的語音播報引擎,向開發(fā)者提供人工智能應(yīng)用層API。該技術(shù)提供將文本轉(zhuǎn)換為語音并進(jìn)行播報的能力。 支持超長文本播報,最大文本長度為100000個字符。 語音播報不支持多線程調(diào)用。 實(shí)時語音交

    2024年02月11日
    瀏覽(90)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)

    HarmonyOS相機(jī)模塊支持相機(jī)業(yè)務(wù)的開發(fā),開發(fā)者可以通過已開放的接口實(shí)現(xiàn)相機(jī)硬件的訪問、操作和新功能開發(fā),最常見的操作如:預(yù)覽、拍照、連拍和錄像等。 相機(jī)靜態(tài)能力 用于描述相機(jī)的固有能力的一系列參數(shù),比如朝向、支持的分辨率等信息。 物理相機(jī) 物理相機(jī)就是獨(dú)

    2024年02月10日
    瀏覽(91)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 二)

    Camera操作類,包括相機(jī)預(yù)覽、錄像、拍照等功能接口。 接口名 描述 triggerSingleCapture?(FrameConfig frameConfig) 啟動相機(jī)幀的單幀捕獲。 triggerMultiCapture?(ListFrameConfig frameConfigs) 啟動相機(jī)幀的多幀捕獲。 configure?(CameraConfig config) 配置相機(jī)。 flushCaptures?() 停止并清除相機(jī)幀的捕獲

    2024年02月11日
    瀏覽(91)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(圖像開發(fā) 二)

    圖像編碼就是將PixelMap圖像編碼成不同存檔格式圖片,用于后續(xù)其他處理,比如保存、傳輸?shù)?。?dāng)前僅支持JPEG格式。 ImagePacker主要用于圖像編碼。 接口名 描述 create() 創(chuàng)建圖像打包器實(shí)例。 initializePacking(byte[] data, PackingOptions opts) 初始化打包任務(wù),將字節(jié)數(shù)組設(shè)置為打包后輸

    2024年02月11日
    瀏覽(97)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包