2017-08-18 38 views
0

我通过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()中的唯一一个。

有什么想法?

+1

是程序**的onPause()**后处死?您可以检查进程ID以进行验证。你写**如果我改变加载的默认值,它甚至不使用该值,它只是去0 **。你的意思是即使指定一个默认值,如1234,** pref.getLong(SECONDS_PLAYED_TOTAL_FILE,1234)**总是返回0? – cmoaciopm

+0

是的,我改变了默认值为0以外的东西,它没有加载0.我在onPause中保存其他东西没有问题(它们不是全局变量寿)。 –

+0

OK,所以** onPause **在您的情况下成功执行。看起来很奇怪。写完后阅读SharedPreferences怎么样?或者在** onPause **之后,使用“adb shell run-as [your_app_package] cat shared_prefs/[your_shared_preference_file_name]”来验证值是否持久。 – cmoaciopm

回答

相关问题