2

目前我存储我所有的用户信息和朋友信息在我创建的一个名为userInfoCore扩展的类中,Application因此我可以将值存储在上下文中。当我的应用程序崩溃时,它会删除所有这些值并且我的用户被迫重新登录,所以我想将它们存储在 SharedPreferences 中,以便在onCreate我的MainActivity.

我知道如何存储它们,这不是问题。问题是我不想用重复的代码使我的代码过度拥挤,并将存储方法放在onDestroy我所有的活动中,我不能@Override onDestroy在我的userInfoCore课堂上,因为它不是我想象的活动?

一些现场会很棒。感谢!

编辑:

我发现 android 清单中的这一行导致我的应用程序上下文数据被破坏,即使用户按下主屏幕也是如此。android:launchMode="singleInstance"

我的想法是肯定的,我可以将它们存储在onPause或按照@CommonsWare 的建议进行操作。然而就像我说的,我不想做所有这些。如果我能找到问题的根源......我有。(清单中的 singleInstance)然后我会更开心。

4

2 回答 2

3

一些现场会很棒。

当数据改变时更新你的持久化存储。与任何单例一样,自定义Application子类仅应被视为数据的缓存或其他临时点。如果您关心这些值,请在数据更改时保留它们。

于 2013-09-26T17:09:30.607 回答
0

这是使用 Model-View-Presenter(或 Model-View-Controller)模式的一个很好的论据。通过将模型(域数据和过程)与视图和演示者(分别为布局和活动)分离,您只需编写一次存储逻辑。

然后你有两个选择:要么按照@CommonsWare 的建议,让模型在它发生变化时自行编写,或者在每个应用程序的 onPause 中添加一个简单的调用(onDestroy 为时已晚!它可能永远不会被调用。)告诉模型来拯救自己。

注意:模型可以接受上下文作为构造参数以用于查找共享首选项,或者它可以使用 PreferenceManager 创建自己的命名首选项

于 2013-09-26T17:31:46.840 回答