有一个Activity和一些变量。它们是从前一个传递过来的。
senerio是: -
当用户单击主页按钮并返回主屏幕时,用户单击应用程序图标一段时间后返回应用程序,应用程序崩溃。我认为这是因为Android系统杀死了活动或其他东西,然后它尝试执行onCreate()
,不幸的是有NullpointerException
因此应用程序崩溃。
有任何想法可以解决这个问题,或者我应该怎么做这个例外? 谢谢。
请允许我提前祝你圣诞快乐。
答案 0 :(得分:1)
当您按下“home”时,控制将转到Home应用程序,并将当前应用程序推送到后台。 Android可能随时终止进程以回收内存。
当你返回Activity时,它可能是同一个实例(如果Android没有杀死进程),或者它可能是Activity的新实例。
如果内存非常紧张并且你从一个Activity向前推进,也会发生同样的事情;活动可以发布。当您按Back时,可能会遇到同样的问题。
如果要保留数据,则应使用onSaveInstanceState(Bundle)来存储要恢复的任何数据。
请注意,onCreate()将Bundle作为参数。如果活动暂停(例如当您按Home时发生),则调用onSaveInstanceState()以允许您临时存储数据,并将相同的数据传递回onCreate()。如果正在重新启动Activity,那么该bundle将为null。
所以你应该这样做:
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
}
...
}
一些注意事项:
希望这有帮助!