2017-02-22 4 views
-1

Androidプロジェクトの必要性は、アクティビティ間でList<Right> rightsを共有します。このリストの値はLoginActivityで開始されます。他のアクティビティでは、このリストを使用してユーザーの権利をチェックします(ユーザーが通信権を持っている場合、アプリは通信タブを表示するか、何か他のことを行います)。私が満たす問題は、List<Right> rightsをAndroidアプリケーションに保存する方法です。私は多くの投稿を読んでおり、人々はGsonとFlexjsonを使用してこのリストをStringに変更し、SharedPreferences.Editor putString (String key,String value)をSharedPreferencesに格納します。他のアクティビティでは、preferences.getString("girl_heart_key", "DEFAULT");を使用して文字列を取得し、それをList<Right> rightsに逆シリアル化します。活動の間List<RightObject>rightsを共有するグローバル静的変数または共有設定android

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

:しかし、私たちはグローバルな静的変数を使用することができると思います。 私の質問は:グローバル変数を使用してSharePrefrenceを置き換えることができますか?パフォーマンス、セキュリティ、メモリに関するリスクはありますか?

+0

チェック、それを参照してくださいhttp://stackoverflow.com/questions/12624671/how-shared-preference-can-be-differ-from-static-global-variable-of-one-class –

答えて

1

いいえ、できません。

グローバルスタティック変数の有効期間はApplicationで、Applicationが終了するとデータは破棄されます。一方、SharedPreferenceは、ユーザーがアプリの設定を介してclear the storage/cacheのアプリを取得するまでデータを保持できます。

より良い方法は、DataSourceとしてアプリケーションに共有できるRepositoryです。

Contextに誤ってstaticという参照があると、メモリリークが発生する可能性があります。

がよりAndroid : Static Fields and Memory Leaks

関連する問題