全局静态变量或共享首选项android

时间:2017-02-22 02:16:37

标签: java android

我的Android项目需要在活动之间共享List<Right> rights。此列表的值在LoginActivity中启动。在其他活动中,我使用此列表来检查用户的权限(如果用户具有通信权限,应用程序将显示对应选项卡或执行其他操作)。我遇到的问题是如何在我的Android应用程序中存储List<Right> rights。我阅读了很多帖子,人们使用Gson和Flexjson将此列表更改为String,并使用SharedPreferences.Editor putString (String key,String value)存储在SharedPreferences中。在其他Activity中,使用preferences.getString("girl_heart_key", "DEFAULT");获取String并将其反序列化为List<Right> rights。但我认为我们可以使用全局静态变量:

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

在活动之间共享List<RightObject>rights。 我的问题是:在这种情况下,我们可以使用全局静态变量来替换SharePrefrence吗?是否有任何风险(关于性能,安全性或记忆力)?

1 个答案:

答案 0 :(得分:2)

不,不建议这样做。

全局静态变量与Application的生命周期相同,一旦Application完成,数据将被销毁。另一方面,SharedPreference可以保留数据,直到用户通过应用设置clear the storage/cache您的应用为止。

更好的方法是让[{1}}为您的应用程序共享为Repository

如果您意外地DataSource引用static,则会出现内存泄漏。

查看更多Android : Static Fields and Memory Leaks