在阅读了介绍性的
Android编程书之后,我想改变示例应用程序,以巩固我对一些未真正涵盖的主题的理解.在进行更改时,我犯了一个错误,但我很好奇为什么错误在某些情况下有效但在其他情况下却没有.
应用程序中的活动在Hashtable< Integer,Question>中存储一系列问题,其中Question是一个包含int和两个字符串的小类.如最初编写的那样,活动在每个onCreate()上从服务器下载问题,因此我想实现onSaveInstanceState()以防止一些冗余下载. onSaveInstanceState()使用putSerializable()将Hashtable保存到Bundle中.
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// mQuestions is a member variable of
// type Hashtable
if (mQuestions != null && mQuestions.size() > 0) {
outState.putSerializable(SAVED_QUESTIONS, mQuestions);
}
}
即使在我知道Parcelable是什么或如何实现之前,它也能完美地适应屏幕方向的变化.我只知道当我按下模拟器的主页键和应用程序静默时出现问题,无法在没有LogCat输出的情况下崩溃.堆栈跟踪让我查找Parcelable并使Question实现它.
我的问题不是我做错了什么.问题是:当Question类没有实现Parcelable时,为什么应用程序只在按Home而不是屏幕方向更改时崩溃?