android 保存 parcelable对象,android – 为什么在onSaveInstanceState()中保存非Parcelable对象的Hashtable有时会起作用?...

博主在尝试改进Android应用程序以避免冗余下载时,遇到一个问题:在不实现Parcelable接口的情况下,Question类的对象在屏幕方向改变时能正确保存,但按Home键后会崩溃。博主发现只有在实现Parcelable后,Question类才能在按下Home键时正确保存其状态。这个问题涉及到Android中Activity的生命周期管理和Parcelable接口的重要性。
摘要由CSDN通过智能技术生成

在阅读了介绍性的

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而不是屏幕方向更改时崩溃?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值