SharedPreferences.edit() 没有相应的 commit() 或 apply() 调用 [英] SharedPreferences.edit() without a corresponding commit() or apply() call

查看:24
本文介绍了SharedPreferences.edit() 没有相应的 commit() 或 apply() 调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将 SharedPreferences 用于我的应用程序的 Intro Slider.但是,我在这一行遇到错误:

class PrefManager {私有 SharedPreferences 首选项;私有 SharedPreferences.Editor 编辑器;private static final String PREF_NAME = "welcome";private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";PrefManager(上下文上下文){int PRIVATE_MODE = 0;pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);编辑器 = pref.edit();}void setFirstTimeLaunch(boolean isFirstTime) {editor.putBoolean(IS_FIRST_TIME_LAUNCH, isFirstTime);editor.commit();}布尔 isFirstTimeLaunch() {返回 pref.getBoolean(IS_FIRST_TIME_LAUNCH, true);}}

<块引用>

editor = pref.edit();

如果我在调用 edit() 后不调用 commit() 或 apply() 会怎样?

解决方案

如果您不调用 commit() 或 apply(),您的更改将不会被保存.

  • Commit() 将更改同步并直接写入文件
  • Apply() 将更改写入内存中的 SharedPreferences立即开始异步提交到磁盘

I'm using SharedPreferences for my apps' Intro Slider. However, I'm getting an error on this line:

class PrefManager {
    private SharedPreferences pref;
    private SharedPreferences.Editor editor;


    private static final String PREF_NAME = "welcome";

    private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";

    PrefManager(Context context) {
        int PRIVATE_MODE = 0;
        pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    void setFirstTimeLaunch(boolean isFirstTime) {
        editor.putBoolean(IS_FIRST_TIME_LAUNCH, isFirstTime);
        editor.commit();
    }

    boolean isFirstTimeLaunch() {
        return pref.getBoolean(IS_FIRST_TIME_LAUNCH, true);
    }

}

editor = pref.edit();

What happens if I don't call commit() or apply() after calling edit()?

解决方案

If you do not call commit() or apply(), your changes will not be saved.

  • Commit() writes the changes synchronously and directly to the file
  • Apply() writes the changes to the in-memory SharedPreferences immediately but begins an asynchronous commit to disk

这篇关于SharedPreferences.edit() 没有相应的 commit() 或 apply() 调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆