繁体   English   中英

Android:当应用程序被杀死时,如何设置新启动的入口点?

[英]Android: When application was killed, how to set entrypoint for new startup?

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

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

但是,由于新的Error Reporting功能,我得到了一些错误报告,这些错误报告都与nullreference错误有关。 null对象是对提到的单独类中的静态字段的引用。

由于我无法重现该错误,因此我倾向于认为这是由于应用程序由于内存不足而被杀死,并且在重新启动该应用程序时,它从用户当前所在的活动中调用了oncreate 。类未还原,因此崩溃。

我想知道:是否有一种方法可以强制应用程序完全“重新启动”,而不是在被终止时从上次使用的活动开始? 还是这是标准行为? 我可以以编程方式执行此操作吗? 就像静态字段为null一样,重新启动应用程序?

在用户正常的状态下重新开始活动-这样做的目的是使用户看上去像从未关闭过该应用程序。 您可以看两件事:

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()一个正在启动的活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM