2017-02-22 30 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