Java 应用程序崩溃时在SharedReferences中存储应用程序上下文

Java 应用程序崩溃时在SharedReferences中存储应用程序上下文,java,android,sharedpreferences,applicationcontext,Java,Android,Sharedpreferences,Applicationcontext,目前,我在一个名为userInfoCore的类中存储了我所有的用户信息和好友信息,该类扩展了应用程序,因此我可以在上下文中存储这些值。当我的应用程序崩溃时,它会删除所有这些值,我的用户被迫重新登录,因此我想将它们存储在SharedReferences中,以便在我的main活动的onCreate中再次抓取 我知道如何储存它们,这不是问题所在。问题是我不想用重复的代码过度填充我的代码,并将存储方法放在我所有活动的onDestroy中,我不能@覆盖我的userInfoCore类中的onDestroy,

目前,我在一个名为
userInfoCore
的类中存储了我所有的用户信息和好友信息,该类扩展了
应用程序
,因此我可以在上下文中存储这些值。当我的应用程序崩溃时,它会删除所有这些值,我的用户被迫重新登录,因此我想将它们存储在SharedReferences中,以便在我的
main活动的
onCreate
中再次抓取

我知道如何储存它们,这不是问题所在。问题是我不想用重复的代码过度填充我的代码,并将存储方法放在我所有活动的
onDestroy
中,我不能
@覆盖我的
userInfoCore
类中的onDestroy
,因为这不是我想象的活动

一些insite会很好。谢谢!

编辑:

我发现android清单中的这一行导致我的应用程序上下文数据被破坏,即使用户按下主屏幕<代码>android:launchMode=“singleInstance”

我的想法是肯定的,我可以将它们存储在
onPause
中,或者按照@commonware的建议执行。然而就像我说的,我不想做所有这些。如果我能找到问题的根源。。。我有。(清单中的单一实例)那么我会更快乐

一些insite会很好


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

这是使用模型视图演示器(或模型视图控制器)模式的一个很好的参数。通过将模型(域数据和过程)与视图和演示者(分别是布局和活动)分离,只需编写一次存储逻辑

然后,您有两种选择:要么按照@commonware的建议执行,让模型在发生更改时自行编写,要么在每个应用程序的onPause(onDestroy太迟了!它可能永远不会被调用)中向模型添加一个简单的调用,告诉它保存自己


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

我同意onDestroy没有一直被调用,这很遗憾。我有一个问题,必须把一些东西放在暂停了一会儿,并吸取了教训。你的第二个建议基本上是我试图避免的。我对Android开发还很陌生,所以我对它一无所知,什么是持久存储,我怎样才能实现它?我知道我要求insite,但也许我应该要求insite和一个链接或一些示例代码。顺便说一句,我喜欢你在社区中所做的工作。很好地利用了你的大脑:D@AaronRussell:“什么是持久存储”--一个文件。或者数据库。或
SharedReferences
。或者“云”。哦。。。我明白了,那现在说得通了。我会的,还有一件事。。。我的AndroidManifest中的这一行是导致我的上下文数据被销毁的原因。。。它不允许它正确地握住它
android:launchMode=“singleInstance”
我能做些什么来解决这个问题?我的Twitter oAuth(twitter4j)需要它@AaronRussell:“我的Twitter oAuth(twitter4j)需要它”——我不知道这是一个要求。我建议问一个单独的问题来澄清这一点。