2016-10-14 7 views
0

内部「MyApplicationを」クラス延びるクラス「Application」を保持していないアプリケーションレベルデバッガで静的変数の値がアクティビティフラグメントに割り当てられた新しい値を

public static int globalflag = 0; 

MainActivityの起動時に「globalflag」の値であります私はフラグメント「MyFragment」に行き、そこで値を変更します:

MyApplication.globalflag = 1; 

値はデバッガでも更新されます。これで、戻るボタンを押すと、デバッガのMyApplication.globalflagの値が0(値は保持されなくなりました)として表示されます。

この値がアプリケーションのライフサイクル全体にわたって保持されることを確認するにはどうすればよいですか?

私はAndroid開発の初心者であり、この問題の入力を感謝しています。ありがとうございました!

答えて

0

最初に私はそれが起こっていると思う理由:

あなたApplicationインスタンスのライフサイクルは、アプリケーションを構成するコンポーネントに関連付けられています。

賢者としてはVogellaと言います。

アプリケーションオブジェクトは、Android コンポーネントの1つが起動されるたびに作成されます。固有のユーザーの下に固有の IDを持つ新しいプロセスで開始されます。 AndroidManifest.xmlファイルで指定しなくても、Androidシステムはデフォルトオブジェクト を作成します。

また

アプリケーションオブジェクトは限りアプリケーションの実行の別の構成要素として任意成分の前に始まり、ラン少なくとも 。

だから、これはあなたが (それを効果的に殺す)アプリケーションインスタンスを活動のライフサイクルの終了をトリガあなたのActivityに戻るボタンを押したときにもゴミがそのリソースのために、システムによって殺さ/収集されるかもしれないということを意味(効果的に必要ないため)。

は、SharedPreferencesやSQLiteのよう活動/アプリケーションのライフサイクルの間で状態を維持するために、他のより良いメカニズムがあります

あなたはSharedPreferences

を使用する方法の詳細についてはthis tutorialを確認することができます。しかし、それは簡単です

Context context = getActivity(); 
SharedPreferences sharedPref = context.getSharedPreferences(
     getString(R.string.preference_file_key), Context.MODE_PRIVATE); 

データの書き込み/保存:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt(getString(R.string.saved_high_score), newHighScore); 
editor.commit(); 

持続データの読み込み:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue); 
関連する問題