我正在使用一个只有静态字段的单独类来存储当前的应用程序数据。
它在应用程序启动时从sharedpreferences
部分填充。其余的是数据,如某些操作的结果,用于进一步浏览这些结果(使用结果的多个活动)。
我可以进入主屏幕,启动其他应用程序等。当我返回自己的应用程序时,它可以正常工作。
但是,由于新的Error Reporting
功能,我收到的一些错误报告都与nullreference
错误有关。 null
的对象是对上述单独类中的静态字段的引用。
由于我无法重现该错误,我倾向于认为这是由于应用程序因内存不足而被杀死,并且当它重新启动时,它会从用户当前所在的活动中调用oncreate
。单独类中的所有静态数据都不会被恢复,因此会崩溃。
我想知道:有没有办法强制应用程序完全“重启”,如果它被杀死,不能从上次使用的活动开始?或者是那种标准行为? 我能以编程方式执行此操作吗?就像静态字段为空时一样,重启app?
答案 0 :(得分:2)
重新启动用户所处的活动是正常行为 - 我们的想法是让用户看起来像应用程序从未关闭过。你可以看两件事:
protected void onSaveInstanceState(Bundle outState){
// This gets called by the system when it's about to kill your app
// Put all your data in the outState bundle
}
该捆绑包与传递给onCreate()
中的活动的捆绑包相同。然后,您可以从中获取任何必要的信息,并恢复静态类中的值。
另一种方法是简单地检查您的任何活动的onResume()
方法中的值。如果值在某种程度上为null或错误,则可以调用start原始活动并finish()
启动。