我通过SharedPreferences保存了几个变量,没有任何问题。但是,我重新启动应用程序后,这些变量中的2个被重置。我认为,虽然储蓄,而不是同时加载,因为如果我改变加载默认值,它不甚至使用该值,它只是为0Android:SharedPreferences在关闭应用程序后丢失2个变量
我称之为的onPause这种方法会发生问题:
public void saveStats() {
SharedPreferences pref = getSharedPreferences(SHARED_PREFERENCES, this.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putLong(SECONDS_PLAYED_TOTAL_FILE, secondsPlayedTotal);
editor.putFloat(CURRENCY_GAINED_TOTAL_FILE, currencyGainedTotal);
editor.apply();
}
和负载onResum:
SharedPreferences pref = getSharedPreferences(SHARED_PREFERENCES, this.MODE_PRIVATE);
SECONDS_PLAYED_TOTAL = pref.getLong(SECONDS_PLAYED_TOTAL_FILE, 0);
CURRENCY_GAINED_TOTAL = pref.getFloat(CURRENCY_GAINED_TOTAL_FILE, 0);
的变量是公共和静态的。 我保存并加载了类似的公共静态变量,但没有问题,但这两个是我保存在onPause()中的唯一一个。
有什么想法?
是程序**的onPause()**后处死?您可以检查进程ID以进行验证。你写**如果我改变加载的默认值,它甚至不使用该值,它只是去0 **。你的意思是即使指定一个默认值,如1234,** pref.getLong(SECONDS_PLAYED_TOTAL_FILE,1234)**总是返回0? – cmoaciopm
是的,我改变了默认值为0以外的东西,它没有加载0.我在onPause中保存其他东西没有问题(它们不是全局变量寿)。 –
OK,所以** onPause **在您的情况下成功执行。看起来很奇怪。写完后阅读SharedPreferences怎么样?或者在** onPause **之后,使用“adb shell run-as [your_app_package] cat shared_prefs/[your_shared_preference_file_name]”来验证值是否持久。 – cmoaciopm