2012-08-28 10 views
6

別のクラスを作成し、それを静的データ変数のみで構成されるストレージとして使用するのは悪い考えですか?クラスを使用して静的データをJavaに格納しますか?

私は現在、Android向けのアプリを開発していますが、問題は、Javaのために一般的です。アンドロイドの場合

、私は活動を横切って移動していると私はいくつかのグローバル/静的フラグを保存したいと思います/その別のクラスでは、私が好きなアクティビティからそれらにアクセスできることvaribles。

PS。データはセッション時間にのみ必要です。

+0

これは悪い考えではないと思います –

+0

あなたのアプリの生涯にわたり、それは良い決定です。長寿命ストレージ用の は、sharedpreferencesまたはsqliteを使用します。 –

答えて

6

まあ、それは悪い考えではありません。このようなタイプのクラスはAndroidで使用できます。しかしここで小さな修正。静的データを保持するクラスを維持する代わりに、そのクラスでApplicationクラスを拡張し、データを格納することができます。ここで

例であり、

public class HelloApplication extends Application { 
     private int globalVariable=1; 

     public int getGlobalVariable() { 
       return globalVariable; 
     } 

     public void setGlobalVariable(int globalVariable) { 
       this.globalVariable = globalVariable; 
     } 
     @Override 
     public void onCreate() { 
       //reinitialize variable 
     } 
} 

そして、あなたの活動で、これを行う、

(HelloApplication)getApplication()).setGlobalVariable(10); 
int valiable=((HelloApplication)getApplication()).getGlobalVariable(); 

Taken from here..

そしてSharedPreferenceについて話す、あなただけのとき値にそれらを使用することを検討すべきです長い間保存しなければならない。そうでない場合は、Applicationクラスを使用し、これを行う正当な方法であるセッターとゲッターを使用する必要があります。

+0

私は1つの問題は、変数にアクセスしたり変更したりするたびにキャストを行う必要があると思います。静的なメソッド/変数を持つ静的クラスを使用すると、複数のキャストが保存されるため、プロセスとメモリが節約されます。 – Flawyte

+0

キャストされたオブジェクトを単独で保存し、それを使用するたびにキャストする必要はありません。 –

+0

新しい変数を追加するたびにセッターとゲッタを作成するのは厄介です。しかし、私はアプリケーションの拡張機能を使用して利点を見ておく必要があります。 –

5

SharedPreferenceを使用して、フラグと変数を格納できます。

このPreference Demoを見てください。

+0

私はそれをセッション時間だけ必要とし、新しいアプリの起動ごとに設定をリセットしたい。 –

1

使用SharedPreference:

は、リンクを参照してください。それはグローバルなアプリケーションの状態を格納することを意味します

0

よく!私の知る限り、それはあなたのプロジェクトのサイズに依存するかもしれません!その比較的大きなその良いが、静的なデータを格納するために別のクラスを使用する場合、私は "ことを示唆している

1

(だけではなく、一つのクラスは、あなたが使用される静的データの種類に応じて、それら2つの以上のクラスを維持する必要性に来るかもしれません)決して "グローバル変数を使用しないでください....

あなたが別のアクティビティにアクセスしているとき、あなたはIntent.putExtras(Name_parameter, "value_parameter")

を使用していくつかの値を投げることができるし、値をreciveする:bは、すべてのパラメータ

歓声を持ってBundle b = getIntent().getExtras();

+2

質問はアクティビティから別のアクティビティにデータを渡すことではなく、コード内のどこからでもその性質に関わらずデータにアクセスすることです。 – Flawyte

+0

また、私はJavaの中で、単にAndroidのことを例として挙げました。 –

0

私はあなたがすべきことを示唆していますグローバルクラスをSingletonクラスでカプセル化します。もっと見る: Singleton Design Pattern

関連する問題