2017-02-22 74 views
-1

我的Android項目需要共享活動之間的List<Right> rights。此列表的值由LoginActivity啓動。在其他活動中,我使用此列表來檢查用戶的權利(如果用戶擁有通信權限,應用程序將顯示通信選項卡或執行其他操作)。我遇到的問題是如何在我的Android應用程序中存儲List<Right> rights。我已經閱讀了許多Post和人們使用Gson和Flexjson將此列表更改爲String,並使用SharedPreferences.Editor putString (String key,String value)存儲在SharedPreferences中。在其他Activity中,使用preferences.getString("girl_heart_key", "DEFAULT");獲取String並將其反序列化爲List<Right> rights。但我想我們可以使用一個全局靜態變量:全局靜態變量或共享偏好的Android

public static List<RightObject>rights = new ArrayList<RightObject>(); 

分享List<RightObject>rights活動之間。 我的問題是:在這種情況下,我們可以使用全局靜態變量來替換SharePrefrence嗎?是否有任何風險(關於性能,安全或內存)?

+0

檢查它http://stackoverflow.com/questions/12624671/how-shared-preference-can-be-differ-from-static-global-variable-of-one-class –

回答

1

NO,但不建議這樣做。

全局靜態變量與您的Application具有相同的生存期,一旦Application完成,數據將被銷燬。直到用戶您的應用程序的clear the storage/cache通過應用程序設置SharedPreference,另一方面可以持續的數據。

更好的方法是讓Repository爲您的應用程序共享爲DataSource

如果你不小心有static參照Context,比會有內存泄漏。

看到更多Android : Static Fields and Memory Leaks