0

我正在使用一个只有静态字段的单独类来存储当前的应用程序数据。sharedpreferences它在应用程序启动时部分填充。其余的是数据,例如某些操作的结果,用于进一步浏览这些结果(使用结果的多个活动)。

我可以转到主屏幕,启动其他应用程序等,当我返回自己的应用程序时,它就可以正常工作。

但是,由于新Error Reporting功能的出现,我收到了一些与错误相关的错误报告nullreference。对象是null对上述单独类中的静态字段的引用。

由于我无法重现该错误,我倾向于认为这是由于应用程序由于内存不足而被杀死,并且当它重新启动时,它会oncreate从用户当前所在的活动中调用。但是,单独类中的所有静态数据没有恢复,因此它崩溃了。

我想知道:有没有办法强制应用程序完全“重新启动”,而不是从最后使用的活动开始,如果它被杀死?或者这是标准行为?我可以以编程方式执行此操作吗?就像静态字段为空时一样,重新启动应用程序?

4

1 回答 1

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()任何活动的方法中的值。如果值在某种程度上为空或错误,那么您可以调用启动原始活动和finish()正在启动的活动。

于 2010-05-27T11:42:19.197 回答