web-dev-qa-db-ja.com

Androidでグローバル変数を作成する方法は?

私のAndroidアプリケーションでは、変数メンバーIDを置くための場所が必要です。問題は、オンラインAPIから取得しているため、それを保存/取得する方法を見つける必要があります

私はそれをカスタムクラスに入れようとしましたが、問題は、アクティビティを殺すと失われます、アプリケーションを拡張する方法があることも知っています。

だから私はグローバル変数を保存する最良の方法は何ですか?

私はインプリメントする必要があります:

  1. OnSaveStateに変数を保存します
  2. Shareprefに保存する
  3. 手動で保存する
  4. 手動で取得する

ありがとう

更新:お返事ありがとうございます。 3つの変数(ブール値、フレーズなどの単純なデータ)のみがあり、アプリの再起動後に必要な場合、単純にshare prefを使用して保存する必要がありますか?それの欠点は何ですか?例えばパフォーマンスに有害ですか?ありがとう

12
user782104

Applicationクラスを拡張するクラスでそれらを宣言することにより、Androidでグローバル変数を作成できます。

このようなもの。

class MyAppApplication extends Application {

    private String mGlobalVarValue;

    public String getGlobalVarValue() {
        return mGlobalVarValue;
    }

    public void setGlobalVarValue(String str) {
        mGlobalVarValue = str;
    }
}

MainActivity.Java

class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle b){
        ...
        MyAppApplication mApp = ((MyAppApplication)getApplicationContext());
        String globalVarValue = mApp.getGlobalVarValue();
        ...
    }
}

更新

これは、アプリケーションが破壊されない限り、値を保持します。アプリケーションインスタンスを破棄した後でも値を保存したい場合は、SharedPreferencesを使用してこれを行うことができます。

SharedPreferncesの詳細はこちらから http://developer.Android.com/reference/Android/content/SharedPreferences.html

26
Ajay S
  • グローバル変数が必要な場合、これは複数のアクティビティ間で共有され、ライフサイクルの変更に耐えますが、それ以外の場合は永続化されず、アプリケーションの再起動に耐えられません最初の回答で提案された方法(Applicationを拡張してそこに置く)は大丈夫です。
  • 永続的なグローバル設定が必要な場合は、アプリケーションの再起動後も存続する必要がある場合は、提案されている他の方法のいずれかを使用する必要があります。 SharedPreferencesがおそらく最も使いやすいでしょう。

このスタックオーバーフローの質問も参照してください。 アクティビティ間でデータを共有する最良の方法は何ですか?

6
stoyanr

SharedPreferences に保存し、sharedpreferenceHelperクラスを作成して取得/保存できます。

2
StarsSky

次のいずれかの方法で複数回使用したい値を保存する方が常に良いです。

  • 共有設定
  • シングルトンクラス
  • ファイルに書き込む
  • SQLiteデータベース
  • ウェブサーバーに保存
1
Atish Agrawal