import dataPreferences from '@ohos.data.preferences';
import bundleManager from '@ohos.bundle.bundleManager';
本地首選項數據的保存,利用key value
【使用要求】
DevEco Studio 3.1.1 Release
api 9
【使用示例】
1、app啟動時,從本地讀取數據,并寫到內存中去
注意:修改EntryAbility.ts的擴展名,改成ets,即:EntryAbility.ets
import MyPreferencesUtil from '../common/utils/MyPreferencesUtil'
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
MyPreferencesUtil.getData(this.context)
}
}
2、在修改內存數據時,再調用一下保存方法
注意:開發工具DevEco studio中,默認每次啟動app是先卸載再安裝導致本地保存的數據丟失,需要改下配置每次運行都覆蓋安裝【entry-->edit config... --> keep application data】
import {MyPreferencesUtil,UserInfo} from '../common/utils/MyPreferencesUtil'
Button('測試').onClick(()= >{
console.info('====當前內存信息 1 ',JSON.stringify(MyPreferencesUtil.getInstance()))
MyPreferencesUtil.getInstance().mUserInfo.token = "測試測試"
MyPreferencesUtil.saveData()
console.info('====當前內存信息 2 ',JSON.stringify(MyPreferencesUtil.getInstance()))
})
export class MyPreferencesUtil {
//日志過濾器
private static readonly LOG: string = "====MyPreferencesUtil"
//本地保存的文件名,和文件內的key名這里打算共用一個就行
private static readonly FILENAME_AND_KEY: string = 'FILENAME_AND_KEY'
/** 本地要保存的用戶信息 */
public mUserInfo: UserInfo = new UserInfo()
// 本地要保存的環境信息
public mEnvirInfo: EnvirInfo = new EnvirInfo()
//=========單例模式,保存數據到內存實例 start=========
private static instance: MyPreferencesUtil;
private constructor() {
}
/**
* 通過單例,獲取本地映射到內存中的實例
* @returns 內存中本地數據的實例
*/
public static getInstance() {
if (this.instance == null) {
this.instance = new MyPreferencesUtil();
}
return this.instance;
}
單例模式,保存數據到內存實例
從磁盤本地讀取數據到內存,賦值給instance
public static async getData(context: Context) {
try {
console.info(MyPreferencesUtil.LOG, 'getData');
let file = await dataPreferences.getPreferences(context, MyPreferencesUtil.FILENAME_AND_KEY)
console.info(MyPreferencesUtil.LOG, 'getData', 'file succ');
let value = await file.get(MyPreferencesUtil.FILENAME_AND_KEY, JSON.stringify(MyPreferencesUtil.getInstance()))
console.info(MyPreferencesUtil.LOG, 'getData', 'get succ', 'value:' + value);
Object.assign(MyPreferencesUtil.getInstance(), JSON.parse(value.toString()))//將本地數據 拷貝到單例中去。
console.info(MyPreferencesUtil.LOG, 'getData', 'assign succ');
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT;
let data = await bundleManager.getBundleInfoForSelf(bundleFlags); //開始保存app的版本名稱和版本號
MyPreferencesUtil.getInstance().mEnvirInfo.versionName = data.versionName
MyPreferencesUtil.getInstance().mEnvirInfo.versionCode = data.versionCode
console.info(MyPreferencesUtil.LOG, 'getData', 'set versionName and versionCode succ');
} catch (e) {
console.error(MyPreferencesUtil.LOG, 'getData', JSON.stringify(e));
}
}
鴻蒙OS開發 | 更多內容↓點擊 | HarmonyOS與OpenHarmony技術 |
---|---|---|
鴻蒙技術文檔 | 開發知識更新庫gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md 在這。 | 或+mau123789學習,是v喔 |
數據備份至磁盤本地
public static async saveData() {
try {
console.info(MyPreferencesUtil.LOG, 'saveData');
let file = await dataPreferences.getPreferences(getContext(this), MyPreferencesUtil.FILENAME_AND_KEY)
console.info(MyPreferencesUtil.LOG, 'saveData', 'file succ');
await file.put(MyPreferencesUtil.FILENAME_AND_KEY, JSON.stringify(MyPreferencesUtil.getInstance()))
console.info(MyPreferencesUtil.LOG, 'saveData', 'put succ');
await file.flush()
console.info(MyPreferencesUtil.LOG, 'saveData', 'flush succ');
} catch (e) {
console.error(MyPreferencesUtil.LOG, 'saveData', JSON.stringify(e));
}
}
}
用戶信息
export class UserInfo {
用戶登錄成功后要保存的token
public token: string = ""
}
環境信息
export class EnvirInfo {
首次啟動的彈窗是否點擊過“同意”。true:已同意,false:沒同意
public isAgreement: boolean = false
當前app的版本名稱
public versionName: string = ''
當前app的版本號
public versionCode: number = 0
}
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
封裝
+關注
關注
124文章
7377瀏覽量
141322 -
存儲
+關注
關注
12文章
3905瀏覽量
84832 -
鴻蒙OS
+關注
關注
0文章
189瀏覽量
4304
發布評論請先 登錄
相關推薦
HarmonyOS開發案例:【用戶首選項】
用戶首選項為應用提供Key-Value鍵值型的數據處理能力,支持應用持久化輕量級數據,常用于保存應用配置信息、用戶偏好設置等。本篇Codelab將基于用戶首選項實現一個簡單的數據管理應用,包含新增、查詢和刪除的功能。
鴻蒙OS崛起,鴻蒙應用開發工程師成市場新寵
應用的形態也在發生著翻天覆地的變化。作為全球領先的移動操作系統和智能終端制造商,華為公司自主研發的鴻蒙OS應運而生,致力于構建一個統一的分布式操作系統,為各行各業的應用開發帶來全新的可能性。
一、
發表于 04-29 17:32
如何設置Xilinx ISE首選項11.x 12.x的默認值
可能是一個新手問題,我們有一個配置允許不同版本的附加工具,如modelsim,synplicity。我們想知道是否有辦法告訴Xilinx默認使用什么。具體來說,我們有興趣設置以下值: 首選項
發表于 11-15 11:29
查看首選項未保存, 如何保存設置?
您好,我想把論壇中的帖子看成“平面閱讀模式”而不是“線程閱讀模式”。所以我轉到用戶控制面板,編輯配置文件,特性首選項,查看首選項,并將其設置為“平面”,然后單擊“保存配置文件”。如果我移動到其他
發表于 09-11 12:08
鴻蒙OS應用程序開發
這份學習文檔主要是帶領大家在鴻蒙OS上學習開發一個應用程序,主要知識點如下:1、U-Boot引導文件燒寫方式;2、內核鏡像燒寫方式;3、鏡像運行。
發表于 09-11 14:39
#HarmonyOS征文#—鴻蒙OS開發流程及DevEco Studio安裝
鴻蒙OS的完整開發流程1. 注冊并實名認證華為開發者賬號鴻蒙官網:www.harmonyos.com注冊登錄華為賬號后,進行實名認證登錄之后
發表于 07-22 11:43
【HarmonyOS】鴻蒙圖片加載工具匯總
;一個在內存中,另一個在內部存儲中。3、鴻蒙圖片加載工具——picasso介紹用于 openharmony 的強大圖像下載和緩存庫。使用說明網格視圖 -從 url下載圖像訪問 Picasso 對象并從
發表于 03-25 13:51
ESP8266/ARDUINO構建H找不到首選項怎么解決?
大家好!我對運行 Arduino 核心的 ESP32 有一些扎實的經驗,并且一直在使用首選項庫來存儲,你猜對了,首選項,到該平臺上的 NVS。這是一個簡單而順利的過程。我正在嘗試將我的代碼移植到運行
發表于 02-21 07:44
鴻蒙 OS 應用開發初體驗
包
ArkTS:鴻蒙生態的應用開發語言。
JS:JavaScript
Previewer:預覽器
Toolchains:工具鏈
Create Project
配置工程
項目名稱、包名、
發表于 11-02 19:38
鴻蒙OS2.0手機開發者Beta版登場
12 月 16 日,華為宣布正式推出鴻蒙 OS 的手機開發者 Beta 版,并正式面向個人/企業開發者公測鴻蒙 2.0,
升級鴻蒙OS 2.0系統,手機存儲空間變大
按計劃,鴻蒙OS 2.0會在6月份開始大面積推送,華為Mate X2、Mate 40系列手機等將首批升級。此前已就流暢度、APP打開速度等,對比了鴻蒙OS 2.0
SiP封裝成為更多應用和市場的首選封裝選項
系統級封裝 (SiP) 正迅速成為越來越多應用和市場的首選封裝選項,引發了圍繞新材料、方法和工藝的狂熱活動。
評論