我有两个活动:一个(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();
第二个(MainActitivy),它在 onResume() 中读取它们,例如
SharedPreferences prefs = activity.getSharedPreferences("myprefs", Context.MODE_PRIVATE);
prefs.getString(...);
当我更改设置并返回主要活动时,会加载旧值!我必须再次打开 SettingsActivity 并再次返回,以进行更改。
onStop() 是否在 onResume() 旁边的单独线程中运行保存例程,因此在读取时,尚未提交更改?如何实现正确的行为?
肮脏的解决方案想法:我正在考虑一个单例,它包含我的偏好并具有保存()和加载(),但这是一个丑陋的解决方案,我想知道如何正确地做到这一点。