2016-04-15 31 views
2

私はアンドロイドアプリを作成しており、ウェブサービスからユーザーの残高を取得して、ユーザーは自分のアプリにログインできます。Android静的変数と共有設定

私は共有の設定をチェックして、ユーザーがログインしているかどうかを確認します。正しいログイン時に、私は共有のprefブール値をtrueに更新し、ユーザーがログアウトするとfalseに設定します。

私はいくつかの断片のバランスを知る必要があり、私は私のアプリの断片を介してナビゲートしているときにそれを覚えておく必要があります。私が "My Account"の部分に戻ってくると、バランスの値が失われ、私は再び自分のWebサービスに電話をかけて確認する必要があります。

文字列の共有プレフゔ゗ルを使用して、アプリが起動するたびに、または天びんに変更があったときにいつでも更新するのが最善の方法です。または、ユーザーがMy Accountフラグメントにナビゲートしたときに参照できるメインアクティビティで静的変数を使用する方がよいでしょう。

共有設定を過剰に使用できますか?

+0

SharedPreferenceを使用できますが、データベースにさらに多くのデータフォーカスを格納したい場合に使用します。それは良い練習です – Kathi

答えて

0

残高やユーザー名などの単一の値の場合は、間違いなくSharedPreferenecesOnSharedPreferenceChangeListenerを使用する必要があります。

あなたは間違いなくデータベースを使用する必要があり、このようなバランス操作などの構造化されたデータについては

  • SQLiteの
  • レルム(NOSQL)
  • StorIO(SQLiteのラッパー)

または一部ORM

+0

アドバイスのためにみんなに感謝します。私はちょうど示唆されているように、共有プレフでバランスを書くつもりです。 –

1

シンプルで洗練されたソリューションは、アンドロイドの非常に単純なライブラリTinyDBを使用することです。これは、共有プリファレンス上の抽象概念です。

あなたはこのようなあなたの活動のonCreate()方法でそれを初期化することができます:フラグメントで

TinyDB tinydb = new TinyDB(this); 

、ちょうどgetActivitythisを交換してください。その後、

そして、このようにそれを使用します。

tinydb.putString("userName", "john"); 
String currentUser = tinydb.getString("userName"); 

はそれがお役に立てば幸いです。

0

グローバル変数ではなくSharedPreferencesにデータを格納する必要があります。これは、アプリケーションがクラッシュしたときに、異なる時間に静的グローバル変数で更新されたデータが失われ、デフォルトデータが残るためです。

関連する問題