2 つのアクティビティがあります。1 つ (SettingsActivity) は、次のように onStop() に設定を保存します。
SharedPreferences.Editor editor = getSharedPreferences("myprefs", Context.MODE_PRIVATE).edit();
editor.putString("login", etLogin.getText().toString());
editor.putString("password", etPassword.getText().toString());
editor.commit();
2 つ目 (MainActivy) は、onResume() で次のように読み取ります。
SharedPreferences prefs = activity.getSharedPreferences("myprefs", Context.MODE_PRIVATE);
prefs.getString(...);
設定を変更してメイン アクティビティに戻ると、古い値が読み込まれます。変更を行うには、SettingsActivity をもう一度開いて、もう一度戻る必要があります。
onResume() の隣の別のスレッドで実行されているルーチンを保存する onStop() は、読み取り時に変更がまだコミットされていませんか? 正しい動作を実現する方法は?
汚い解決策のアイデア: 私は自分の設定を保持し、save() と load() を持つシングルトンについて考えていますが、これは醜い解決策であり、これを適切に行う方法を知りたいです。