2017-08-18 41 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

回答

相關問題