有一个活动和一些变量。它们是从前一个传递过来的。情况是: - 当用户点击主页按钮并返回主屏幕时,用户点击应用程序图标返回应用程序一段时间后,应用程序崩溃。我认为那是因为 Android 系统杀死了活动或其他东西,然后它试图做onCreate()
,不幸的是有一个NullpointerException
所以应用程序崩溃了。
有什么想法可以解决这个问题,或者我应该如何处理这个异常?谢谢。
请允许我提前祝你圣诞快乐。
有一个活动和一些变量。它们是从前一个传递过来的。情况是: - 当用户点击主页按钮并返回主屏幕时,用户点击应用程序图标返回应用程序一段时间后,应用程序崩溃。我认为那是因为 Android 系统杀死了活动或其他东西,然后它试图做onCreate()
,不幸的是有一个NullpointerException
所以应用程序崩溃了。
有什么想法可以解决这个问题,或者我应该如何处理这个异常?谢谢。
请允许我提前祝你圣诞快乐。
当您按下“home”时,控制转到 Home 应用程序,并将当前应用程序推到后台。Android 可能随时终止进程以回收内存。
当您返回 Activity 时,它可能是同一个实例(如果 Android 没有终止该进程),也可能是 Activity 的新实例。
如果内存非常紧张并且您从 Activity 向前推进,也会发生同样的事情;Activity 可以被释放。当您按返回时,您可能会遇到同样的问题。
如果要保留数据,则应使用 onSaveInstanceState(Bundle) 存储要恢复的任何数据。
请注意, onCreate() 将 Bundle 作为参数。如果 Activity 暂停(例如按下 Home 时发生),则调用 onSaveInstanceState() 以允许您临时存储数据,并将相同的数据传递回 onCreate()。如果 Activity 是新启动的,则该捆绑包将为空。
因此,您应该执行以下操作:
public void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
// store data in the bundle
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// read old data from the Bundle
} else {
// you're starting clean; no saved data
}
...
}
几点注意事项:
希望这可以帮助!