[英]Global static variable or shared preference android
我的Android項目需要在Activity之間共享List<Right> rights
。 該列表的值在LoginActivity中初始化。 在其他活動中,我使用此列表檢查用戶的權限(如果用戶具有通信權限,則應用程序將顯示通信選項卡或執行其他操作)。 我遇到的問題是如何在我的Android應用程序中存儲List<Right> rights
。 我讀過很多文章,人們使用Gson和Flexjson將此列表更改為String並使用SharedPreferences.Editor putString (String key,String value)
存儲在SharedPreferences中。 在其他活動中,使用preferences.getString("girl_heart_key", "DEFAULT");
獲取String並將其反序列化為List<Right> rights
。 但我認為我們可以使用全局靜態變量:
public static List<RightObject>rights = new ArrayList<RightObject>();
在活動之間共享List<RightObject>rights
。 我的問題是:在這種情況下,我們可以使用全局靜態變量替換SharePrefrence嗎? 是否存在任何風險(有關性能,安全性或內存)?
不,不建議這樣做。
全局靜態變量的壽命與Application
相同,一旦Application
完成,數據將被銷毀。 另一方面, SharedPreference
可以保留數據,直到用戶通過應用程序設置clear the storage/cache
應用程序clear the storage/cache
。
更好的方法是擁有一個可以作為應用程序的DataSource
共享的Repository
。
萬一您意外地對Context
進行了static
引用,那么將發生內存泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.