【发布时间】:2016-05-21 13:44:46
【问题描述】:
我目前正在使用 Android 中的 SharedPreferences,但遇到了我无法解释的奇怪行为。这是我的代码:
SharedPreferences appPreferences = this.getSharedPreferences("settings", Context.MODE_PRIVATE);
appPreferences.edit().putBoolean("launched_before", true);
appPreferences.edit().apply();
appPreferences = null;
appPreferences = this.getSharedPreferences("settings", Context.MODE_PRIVATE);
boolean test = appPreferences.getBoolean("launched_before", false); //this is false
我写入 SharedPreferences 的值没有被保存。我知道我可以使用getDefaultSharedPreferences(),但我不想在这里这样做,因为默认文件存储其他值。
当我使用commit()而不是apply()时,commit()的返回值为true,但我仍然无法正确加载文件。
【问题讨论】:
-
我相信应用 SharedPreferences 是一个异步操作,因此不能保证同步代码中的结果。放入布尔值后,您是否尝试过获取布尔值?我看不出重新分配的意义
-
@cricket_007 无论我在哪里尝试阅读,它都是错误的