簡體   English   中英

全局靜態變量或共享首選項android

[英]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引用,那么將發生內存泄漏。

查看更多Android:靜態字段和內存泄漏

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM