我有2个活动,在第2个活动中,我使用编辑器将字符串放入共享首选项并提交它。
当我从第2个活动返回到第1个活动时,看不显示字符串。
但是,当我从它中删除应用程序/退出并再次运行应用程序时,我能够在第1个活动中看到字符串。
我的问题:SharedPreferences是这样工作的吗?
因为返回了先前的值,即使在将其更新为第二个活动中的新值之后也是如此。
第一个活动有2个textview,仅用于显示字符串。
第二个活动输入2个字符串保存,finish();
返回第一个活动
Oncreate
方法中的第一个活动我获取共享的pref并显示
从第1次到第2次移动到第2次活动时我完成了();第一项活动;
新的值不是显示,而是仅在重新打开应用后才显示。
答案 0 :(得分:2)
我假设您的代码有关SharedPreferences的效果,否则您在杀死应用后不会再看到相同的字符串。
所有关于将数据读入和写入首选项的时刻。如果您保留一个活动onOause是回调将数据写入首选项的位置。因为它是最后一个回调,你可以指望在生命周期中被解雇。因为你必须考虑系统也可以杀死你的Activity,并且可能不会调用onDestroy。
要从首选项中读取,您应该使用onResume作为默认选项。在你的情况下,我认为onStart也有效。但总的来说,Resume是要走的路。
这样你总能正确地写/读,你的活动总是显示最新的数据。
答案 1 :(得分:2)
所以没有必要关闭应用以查看更新的值吗?
没有。但是:
您必须确保实际从第一个活动中的SharedPreferences
重新加载UI,方法是使用您确定将调用的生命周期方法(例如onResume()
)或使用OnSharedPreferenceChangeListener
您必须在同一过程中同时拥有这两项活动(例如,从清单中删除所有android:process
属性)
This sample project演示了在一个活动中编辑偏好并将其显示在另一个活动中。