7

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

私は現在Android用のアプリを開発していますが、質問はJavaの一般的なものです。

アンドロイドの場合、私はアクティビティ間を移動しています。その別のクラスにいくつかのグローバル/静的フラグ/変数を保存し、必要なアクティビティからそれらにアクセスできるようにしたいと考えています。

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

4

7 に答える 7

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();

ここから撮影..

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

于 2012-08-28T11:12:27.853 に答える
5

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

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

于 2012-08-28T11:10:09.117 に答える
2

グローバル変数を保存する静的クラスを作成する代わりに、Application クラスを使用することをお勧めします。

リンクを参照してください:

Android グローバル変数

于 2012-08-28T11:11:09.517 に答える
1

SharedPreference を使用してフラグと変数を保存する

http://developer.android.com/reference/android/content/SharedPreferences.html

グローバル変数の場合:

Android Application クラスを使用することをお勧めします。グローバルなアプリケーションの状態を保存するためのものです

于 2012-08-28T11:11:18.673 に答える
1

グローバル変数を「決して」使用しないことをお勧めします....

別のアクティビティにアクセスしているときは、を使用していくつかの値をスローできますIntent.putExtras(Name_parameter, "value_parameter")

そして値を受け取ります:Bundle b = getIntent().getExtras();ここで、bにはすべてのパラメータがあります

乾杯、

于 2012-08-28T11:15:42.783 に答える
0

グローバル クラスを Singleton クラスでカプセル化することをお勧めします。詳細については、 シングルトン デザイン パターンを参照してください。

于 2012-08-28T11:17:47.630 に答える
0

良い !私の知る限り、プロジェクトのサイズに依存する可能性があります。比較的大きい場合は、個別のクラスを使用して静的データを保存することをお勧めします (1 つのクラスだけでなく、使用する静的データのタイプに応じて 2 つ以上のクラスを保持する必要がある場合があります)。

于 2012-08-28T11:13:15.757 に答える