目前我将所有用户信息和朋友信息存储在我创建的名为userInfoCore
的类中,该类扩展Application
,以便我可以将值存储在上下文中。当我的应用程序崩溃时,它会删除那些值并且我的用户被迫重新登录,所以我想将它们存储在SharedPreferences中,以便在我onCreate
的{{1}}中再次抓取。
我知道如何存储它们,这不是问题。问题是我不想用重复的代码过度拥挤我的代码并将存储方法放在我所有活动的所有MainActivity
中,并且我不能onDestroy
在我的@Override onDestroy
类中它不是我想象的活动吗?
有些人会很好。谢谢!
编辑:
我发现android清单中的这一行导致我的应用程序上下文数据被破坏,即使用户按下主屏幕也是如此。 userInfoCore
我的想法是,我可以将它们存储在android:launchMode="singleInstance"
中,或者做@CommonsWare建议的内容。但就像我说的,我不想要做所有这些。如果我能找到问题原因的根源......我有。 (清单中的singleInstance)然后我会更开心。
答案 0 :(得分:2)
有些人会很好。
数据更改时更新持久存储。与任何单例一样,自定义Application
子类只应被视为数据的缓存或其他瞬态点。如果您关心这些值,请在数据更改时保留它们。
答案 1 :(得分:0)
这是使用Model-View-Presenter(或模型 - 视图 - 控制器)模式的一个很好的论据。通过将模型(域数据和过程)与View和Presenter(分别是布局和活动)分开,您只需编写一次Store逻辑。
然后您有两个选择:要么像@CommonsWare所建议的那样,让模型在每次更改时自行编写,或者在每个应用程序的onPause中添加一个简单的调用(onDestroy为时已晚!它可能永远不会被调用。)到模型告诉它自救。
注意:模型可以接受上下文作为构造参数以用于查找共享首选项,或者它可以使用PreferenceManager创建自己的命名首选项