Android 如何读取更新的共享首选项?
我有两个活动:一个(SettingsActivity),它将首选项保存在onStop()中,如下所示:Android 如何读取更新的共享首选项?,android,sharedpreferences,Android,Sharedpreferences,我有两个活动:一个(SettingsActivity),它将首选项保存在onStop()中,如下所示: SharedPreferences.Editor editor = getSharedPreferences("myprefs", Context.MODE_PRIVATE).edit(); editor.putString("login", etLogin.getText().toString()); editor.putString("password", etPassword.getT
SharedPreferences.Editor editor = getSharedPreferences("myprefs", Context.MODE_PRIVATE).edit();
editor.putString("login", etLogin.getText().toString());
editor.putString("password", etPassword.getText().toString());
editor.commit();
第二个(mainActivity),它在onResume()中读取它们,就像
当我更改设置并返回主活动时,会加载旧值!我必须再次打开SettingsActivity并返回,才能进行更改
onStop()和保存例程是否在onResume()旁边的单独线程中运行,以便在读取时还未提交更改?如何实现正确的行为
肮脏的解决方案想法:我正在考虑一个singleton,它保存了我的首选项,并具有save()和load(),但这是一个丑陋的解决方案,我想知道如何正确地执行此操作。设置活动是否已停止,如果没有,则必须调用finish();保存用户名和密码后调用onstop()方法()
如果您只是调用save方法并点击back按钮返回到主活动,则不会触发onStop()方法。因为SettingsActivity仍在运行并在后台暂停。是,已调用onStop()。但是它是在onResume()之后调用的(或者在onResume()旁边运行),我在onStop()中调用了记录器并打印了输出,所以我认为onStop()是被调用的。在onStop()和onResume()方法的末尾调用super.onStop()和super.onResume()吗?愿这能解决你的问题!?是的,我同时调用它们,我尝试在保存/加载之前和之后调用它们,仍然是一样的:-(好的,我将其移动到onPause(),并且也执行了我前面提到的单例:-)
SharedPreferences prefs = activity.getSharedPreferences("myprefs", Context.MODE_PRIVATE);
prefs.getString(...);