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后读取不到存储的内容

阅读 535
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进