onRestoreInstanceState()在预期时不被调用

时间:2010-06-27 19:10:32

标签: android

我最近遇到了onSaveInstanceState()onRestoreInstanceState()遇到的麻烦。我有多个活动使用这些方法来保存状态,以防系统清理它们。他们中的大多数都工作,除了一个,我不知道为什么。

具体发生的是:

  • 我的模拟器正在运行,开发工具设置为destroy()所有活动,当它们不再可见时。 (这样我就可以证明保存/恢复正常工作。)
  • 有问题的活动已启动,我将继续更改其某些状态。
  • 我启动一个新的Activity,让它运行一会儿,然后使用'back'按钮转到我之前的Activity。
  • 回到有问题的活动后,我注意到默认状态又回来了,因此,它没有应有的状态。

我注意到onSaveInstanceState()被调用,onCreate()被调用,但是有一个空包,永远不会调用onRestoreInstanceState()

有没有人见过这个?

3 个答案:

答案 0 :(得分:4)

我相信我已经找到了这个问题,而且我在原始问题中没有透露具体细节。

我在捆绑中保存的一件事非常大(一个500x1000像素的Bitmap)。当我从Bundle中删除它时,保存了其他所有内容,使用Bundle调用了onCreate()方法,并且还调用了onRestoreInstanceState()。

因此我相信你可以在onSaveInstanceState()中保存最大大小的Bundle,这是没有记录的。 (至少据我所知)

答案 1 :(得分:3)

您正在使用的开发工具设置可能没有您期望的行为。

如果您想测试onSaveInstanceState() / onRestoreInstanceState(),最简单的方法是更改​​方向(<Ctrl>-<F11>)。默认情况下,使用实例状态销毁并重新创建活动。

答案 2 :(得分:1)

在另一个问题的主题中给出了onRestoreInstanceState()未调用(或更多peciselly:调用时)的原因:onSaveInstanceState () and onRestoreInstanceState ()