0

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

当我从第二个活动返回到第一个活动以查看未显示的字符串时。

但是当我杀死应用程序/退出并再次运行应用程序时,我能够看到第一个活动中的字符串。

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

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

第一个活动有 2 个文本视图,仅用于显示字符串。

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

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

当从第一个到第二个移动到第二个活动时,我完成();第一项活动;

仍然没有显示新值,但仅在重新打开应用程序后才会显示。

4

2 回答 2

2

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

这就是将数据读取和写入首选项的时刻。如果您离开 Activity onPause 是将数据写入首选项的回调。因为它是您可以指望在生命周期中被触发的最后一个回调。因为您必须考虑系统也可以杀死您的 Activity 并且可能不会调用 onDestroy。

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

这样,您始终可以正确写入/读取,并且您的活动始终显示最新数据。

于 2013-09-15T12:37:49.017 回答
2

所以无需关闭应用程序即可查看更新的值?

没有。但是:

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

  • 您必须在同一个流程中拥有这两个活动(即,android:process从清单中删除任何属性)

这个示例项目演示了在一个活动中编辑首选项并在另一个活动中显示它们。

于 2013-09-15T12:38:02.450 回答