HarmonyOS preferences无法持久化存储

import { preferences } from '@kit.ArkData';
import { BusinessError } from '@ohos.base';

const TAG = 'CacheUtils'
export default class CacheUtils{

  static getString(fileName:string,key:string,defaultValue:string):string{
    Log.i(TAG,"getString() fileName="+fileName+" key="+key+" defaultValue="+defaultValue);
    let options: preferences.Options = { name: fileName };
    let dataPreferences = preferences.getPreferencesSync(getContext(), options);
    if (dataPreferences){
      let value = dataPreferences.getSync(key, defaultValue).toString();
      Log.i(TAG,"CacheUtils.getString() fileName="+fileName+" key="+key+" value="+value);
      return value;
    }
    return ''
  }

  static put(fileName:string,key:string,value:string):void{
    Log.i(TAG,"CacheUtils.put() fileName="+fileName+" key="+key+" value="+value);
    let options: preferences.Options = { name: fileName };
    let dataPreferences = preferences.getPreferencesSync(getContext(), options);
    if (dataPreferences){
      dataPreferences.putSync(key, value);
      dataPreferences.flush((err: BusinessError) => {
        if (err) {
          Log.e(TAG,"CacheUtils.put() Failed to flush. Cause: " + err);
          return;
        }
        Log.i(TAG,"CacheUtils.put() Succeeded in flushing.");
      })
    }
  }
}

上述代码存储的内容,关闭app再次打开app后读取不到存储的内容

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

“flush之后重启App”,需要确认重启App的方法:如果通过DevEco点击‘Run’重新运行项目且在‘Run/Debug Configurations’-‘General’-‘Installation Options’-未勾选‘Keep Application Data’,该操作会清除应用之前缓存在本地的数据。

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS Preferences如何实现持久存储
456浏览 • 1回复 待解决
HarmonyOS 持久存储方案
339浏览 • 1回复 待解决
PersistentStorage持久存储问题
592浏览 • 0回复 待解决
如何实现应用数据持久存储
2216浏览 • 1回复 待解决
关于数据持久存储要如何实现
578浏览 • 2回复 待解决
HarmonyOS preferences.putSync 存储报错
381浏览 • 1回复 待解决
HarmonyOS dataPreferences不是持久存储
456浏览 • 1回复 待解决
HarmonyOS 使用preferences存储的限制
425浏览 • 1回复 待解决
HarmonyOS 基本类型数据持久
29浏览 • 1回复 待解决
关于数据持久使用问题
277浏览 • 1回复 待解决