2013-01-11 11 views
3

我想從SharedPreferences中獲取值並將其存儲在一個靜態變量中。問題是有時我從靜態變量中獲得空值,但S​​haredPreferences有價值。 我已經通過這個過程儲值:爲什麼我的android應用程序的靜態變量有時會返回null?

SharedPreferences sp = u.returnShare(); 
    SharedPreferences.Editor editor = sp.edit(); 

    StaticVariables.userId = sp.getString("UserId", "default"); 

回答

3

不要使用靜態變量,它是不好的做法。 Android可以隨時銷燬應用程序的進程,稍後通過根據需要重新創建活動來重新創建它。如果你在「第一個」活動中創建你的靜態變量,那麼當第二個或第三個開始時它不會被初始化。

+0

那我該怎麼辦?我應該每次從sharedPreference或其他更好的主意中獲得價值嗎? – TKumar

+0

將靜態變量視爲緩存,如果爲空,則需要再次從共享首選項獲取。 – smith324

3

靜態變量在android中不是一個好的長期存儲。當系統處於後臺時(例如,其他任務需要內存時),系統可能會隨時中止應用程序。當應用程序重新啓動時,所有存儲在靜態變量中的值都會消失。

+0

那我能做些什麼?我應該每次從sharedPreference或其他更好的主意中獲得價值嗎? – TKumar

+0

是的,再次從共享偏好中獲取它。 – Henry

相關問題