android - 应用重启后共享首选项不持久

标签 android save preferences shared persistent

我在这里找到了所有答案并尝试了所有解决方案,但我的共享偏好仍然不持久。

这是我的代码:

public static void setActivated(boolean activated) {
    SharedPreferences sp = Utils.getContext().getSharedPreferences(
            USER_PREFS, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit(); 
    editor.putBoolean(ASD, activated);
    editor.commit();
}

public static boolean isActivated() {
    SharedPreferences sp = Utils.getContext().getSharedPreferences(USER_PREFS, Context.MODE_PRIVATE);
    return sp.getBoolean(ASD, true); 
}

我也试过:

editor.clear();
editor.put ..
editor.commit();

我也试过

editor.apply();

我什至尝试同时使用 .apply() 和 .commit() 但没有成功。

另一个想法是尝试对文件使用不同的模式:

...getSharedPreferences(USER_PREFS, Context.MODE_MULTI_PROCESS);

问题是保存的值不是持久的。如果我关闭应用程序然后重新打开它,所有值都是错误的。

有人有什么想法吗?我还要提到的是,问题仅出现在某些设备上,例如 HTC One S、三星 Galaxy S3(我在不同的 S3 上测试过,它运行良好)。

编辑:我在按钮点击监听器上调用保存,并在加载 fragment 时调用 isActivated(在 onViewCreated() 之后)。

谢谢!

最佳答案

您好,我认为它应该有效。如果清除不起作用,您可以尝试我的解决方案中详述的第二个选项:

你有两个选择:

  1. 在 Activity 的生命周期中获取共享偏好值。

  2. .commit

    之前调用.clear

看我的回答:

Android Persistent Checkable Menu in Custom Widget After Reboot Android

关于android - 应用重启后共享首选项不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282443/

相关文章:

android - SharedPreferences 是否可以在不同的 Android 应用程序之间共享?

Android:子类化 DialogPreference

javascript - 如何摆脱谷歌偏好脚本?

Android 谷歌地图 API v2 : get my bearing location

java - @override error : The method onClick(View) of type new View. OnClickListener(){} 必须重写父类(super class)方法

python - EOFError 超出输入 Python

java - 我怎样才能得到过滤后的模型?

c# - 文件名有两个反斜杠 C#

Android Button 未填满 RelativeLayout 中的全部空间

java - 在 Android 中更改上下文菜单的样式