我有两个活动:一个(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()旁边的单独线程中运行保存例程,所以在读取时,还没有提交更改?如何实现正确的行为?
肮脏的解决方案想法:我正在考虑一个单身人士,它拥有我的偏好并且有save()和load(),但这是一个丑陋的解决方案,我想知道,如何正确地做到这一点。
答案 0 :(得分:0)
如果没有你必须调用finish(),那么SettingsActivity是否已停止;保存用户名和密码后调用onstop()方法(activity lifecycle)。
如果您只是调用save方法并通过单击后退按钮返回主活动,则不会触发onStop()方法。因为SettingsActivity仍然在后台运行并暂停。