あなたのクラスは(GC中に)クラスローダーによってメモリから削除され、次にグローバルクラスを使用するときにロードされると思います。
私の提案は、これにSingeltonクラスを使用することです。
public class Global {
public String USER_ID = "";
public String USER_NAME = "";
public String USER_PASSWORD = "";
//constructor
private Global(){
// just to prevent object creation from outside
}
//static reference
public static Global global=null;
public Global getInstance(){
return ((global!=null)? global : (global=new Global()) ;
}
}
これで、このクラスを使用する場所ならどこでもこのオブジェクトを取得できます。単一のロジックにより、すべてのオブジェクト間で共有される唯一のオブジェクトであることが保証されます。
を使用してスレッドで参照を取得できます
global = Global.getInstance();
これで、変数を使用できます。つまり、global.USER_IDを使用してUSER_IDを使用できます。
グローバルオブジェクトの参照があるため、スレッドが有効になるまで、GCはそれをメモリから削除しません。
注
説明のためだけにパブリック変数を使用しましたが、ほとんどの場合、これらは推奨されていません。
編集
ユーザーデータを保存するには、 SharedPreferencesをお勧めします。次のように使用できます。-
private final String YourAppName_PREFS_NAME = "chooseAMeaningFulName";
private final String YourAppName_USERNAME = "username";
private final String YourAppName_PASSWORD = "password";
/*This function will save the user name and password for providing Automatically login in future*/
public void saveUserData() {
if ( rememberMeChckbox.isChecked() ) {
// Log.i("loginFrag", "Saving userName: Pass " + userName + " : " + password);
loginActivity.getSharedPreferences(YourAppName_PREFS_NAME, Context.MODE_PRIVATE).edit().putString(YourAppName_USERNAME, userName)
.putString(YourAppName_PASSWORD, password).commit();
} else {
loginActivity.getSharedPreferences(YourAppName_PREFS_NAME, Context.MODE_PRIVATE).edit().remove(RBR_USERNAME).remove(RBR_PASSWORD).commit();
}
}
/*This function returns the previous data from the SharedPreferences and fills the UserName and Password Text Box*/
private void getPreviousUserData() {
SharedPreferences preferences = loginActivity.getSharedPreferences(YourAppName_NAME, Context.MODE_PRIVATE);
userName = preferences.getString(YourAppName_USERNAME, null);
password = preferences.getString(YourAppName_PASSWORD, null);
// Log.i("loginFrag", "Got userName: Pass " + userName + " : " + password);
if ( userName != null ) {
uText.setText(userName);
} else {
uText.setText("android");
}
if ( password != null ) {
passText.setText(password);
} else {
passText.setText("android");
}
}