鴻蒙用戶首選項數(shù)據(jù)持久化
踏入鴻蒙世界的敲門磚,標(biāo)志著您在技術(shù)征途上的全新起點,提升就業(yè)競爭力,獲得行業(yè)認可,點亮職業(yè)成長先機,快人一步搶占未來應(yīng)用開發(fā)賽道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-infoq&ha_sourceId=89000233
用戶首選項為應(yīng)用提供Key-Value鍵值型的數(shù)據(jù)處理能力,支持應(yīng)用持久化輕量級數(shù)據(jù),并對其修改和查詢。當(dāng)用戶希望有一個全局唯一存儲的地方,可以采用用戶首選項來進行存儲。Preferences會將該數(shù)據(jù)緩存在內(nèi)存中,當(dāng)用戶讀取的時候,能夠快速從內(nèi)存中獲取數(shù)據(jù),當(dāng)需要持久化時可以使用flush接口將內(nèi)存中的數(shù)據(jù)寫入持久化文件中。Preferences會隨著存放的數(shù)據(jù)量越多而導(dǎo)致應(yīng)用占用的內(nèi)存越大,因此,Preferences不適合存放過多的數(shù)據(jù),也不支持通過配置加密,適用的場景一般為應(yīng)用保存用戶的個性化設(shè)置(字體大小,是否開啟夜間模式)等。
動作機制
如圖所示,用戶程序通過ArkTS接口調(diào)用用戶首選項讀寫對應(yīng)的數(shù)據(jù)文件。開發(fā)者可以將用戶首選項持久化文件的內(nèi)容加載到Preferences實例,每個文件唯一對應(yīng)到一個Preferences實例,系統(tǒng)會通過靜態(tài)容器將該實例存儲在內(nèi)存中,直到主動從內(nèi)存中移除該實例或者刪除該文件。

約束限制
·首選項無法保證進程并發(fā)安全,會有文件損壞和數(shù)據(jù)丟失的風(fēng)險,不支持在多進程場景下使用。
·Key鍵為string類型,要求非空且長度不超過1024個字節(jié)。
·如果Value值為string類型,請使用UTF-8編碼格式,可以為空,不為空時長度不超過16MB。
·當(dāng)存儲的數(shù)據(jù)中包含非UTF-8格式的字符串時,請使用Uint8Array類型存儲,否則會造成持久化文件出現(xiàn)格式錯誤造成文件損壞。
·當(dāng)調(diào)用removePreferencesFromCache或者deletePreferences后,訂閱的數(shù)據(jù)變更會主動取消訂閱,重新getPreferences后需要重新訂閱數(shù)據(jù)變更。
·不允許deletePreferences與其他接口多線程、多進程并發(fā)調(diào)用,否則會發(fā)生不可預(yù)期行為。
·內(nèi)存會隨著存儲數(shù)據(jù)量的增大而增大,所以存儲的數(shù)據(jù)量應(yīng)該是輕量級的,建議存儲的數(shù)據(jù)不超過50MB,當(dāng)存儲的數(shù)據(jù)較大時,在使用同步接口創(chuàng)建Preferences對象和持久化數(shù)據(jù)時會變成耗時操作,不建議在主線程中使用,否則可能出現(xiàn)appfreeze問題。
開發(fā)步驟
1. 導(dǎo)入@kit.ArkData模塊
![]()
2. 獲取Preferences實例

3. 寫入數(shù)據(jù)
使用putSync()方法保存數(shù)據(jù)到緩存的Preferences實例中。在寫入數(shù)據(jù)后,如有需要,可使用flush()方法將Preferences實例的數(shù)據(jù)存儲到持久化文件。

4. 讀取數(shù)據(jù)
使用getSync()方法獲取數(shù)據(jù),即指定鍵對應(yīng)的值。如果值為null或者非默認值類型,則返回默認數(shù)據(jù)。

5. 刪除數(shù)據(jù)
使用deleteSync()方法刪除指定鍵值對。
![]()
6. 數(shù)據(jù)持久化
應(yīng)用存入數(shù)據(jù)到Preferences實例后,可以使用flush()方法實現(xiàn)數(shù)據(jù)持久化。

7. 刪除指定文件
使用deletePreferences()方法從內(nèi)存中移除指定文件對應(yīng)的Preferences實例,包括內(nèi)存中的數(shù)據(jù)。若該Preference存在對應(yīng)的持久化文件,則同時刪除該持久化文件,包括指定文件及其備份文件、損壞文件。

(轉(zhuǎn)載自51CTO,作者:龍兒箏)

浙公網(wǎng)安備 33010602011771號