SharedPreferences澄清

时间:2013-09-15 12:08:15

标签: java android sharedpreferences

我有2个活动,在第2个活动中,我使用编辑器将字符串放入共享首选项并提交它。

当我从第2个活动返回到第1个活动时,看不显示字符串。

但是,当我从它中删除应用程序/退出并再次运行应用程序时,我能够在第1个活动中看到字符串。

我的问题:SharedPreferences是这样工作的吗?

因为返回了先前的值,即使在将其更新为第二个活动中的新值之后也是如此。

第一个活动有2个textview,仅用于显示字符串。

第二个活动输入2个字符串保存,finish();返回第一个活动

Oncreate方法中的第一个活动我获取共享的pref并显示

从第1次到第2次移动到第2次活动时我完成了();第一项活动;

新的值不是显示,而是仅在重新打开应用后才显示。

2 个答案:

答案 0 :(得分:2)

我假设您的代码有关SharedPreferences的效果,否则您在杀死应用后不会再看到相同的字符串。

所有关于将数据读入和写入首选项的时刻。如果您保留一个活动onOause是回调将数据写入首选项的位置。因为它是最后一个回调,你可以指望在生命周期中被解雇。因为你必须考虑系统也可以杀死你的Activity,并且可能不会调用onDestroy。

要从首选项中读取,您应该使用onResume作为默认选项。在你的情况下,我认为onStart也有效。但总的来说,Resume是要走的路。

这样你总能正确地写/读,你的活动总是显示最新的数据。

答案 1 :(得分:2)

  

所以没有必要关闭应用以查看更新的值吗?

没有。但是:

  • 您必须确保实际从第一个活动中的SharedPreferences重新加载UI,方法是使用您确定将调用的生命周期方法(例如onResume())或使用OnSharedPreferenceChangeListener

  • 您必须在同一过程中同时拥有这两项活动(例如,从清单中删除所有android:process属性)

This sample project演示了在一个活动中编辑偏好并将其显示在另一个活动中。