我的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吗?是否有任何风险(关于性能,安全性或记忆力)?
答案 0 :(得分:2)
不,不建议这样做。
全局静态变量与Application
的生命周期相同,一旦Application
完成,数据将被销毁。另一方面,SharedPreference
可以保留数据,直到用户通过应用设置clear the storage/cache
您的应用为止。
更好的方法是让[{1}}为您的应用程序共享为Repository
。
如果您意外地DataSource
引用static
,则会出现内存泄漏。