我最近遇到了onSaveInstanceState()
和onRestoreInstanceState()
遇到的麻烦。我有多个活动使用这些方法来保存状态,以防系统清理它们。他们中的大多数都工作,除了一个,我不知道为什么。
具体发生的是:
destroy()
所有活动,当它们不再可见时。 (这样我就可以证明保存/恢复正常工作。)我注意到onSaveInstanceState()
被调用,onCreate()
被调用,但是有一个空包,永远不会调用onRestoreInstanceState()
。
有没有人见过这个?
答案 0 :(得分:4)
我相信我已经找到了这个问题,而且我在原始问题中没有透露具体细节。
我在捆绑中保存的一件事非常大(一个500x1000像素的Bitmap)。当我从Bundle中删除它时,保存了其他所有内容,使用Bundle调用了onCreate()方法,并且还调用了onRestoreInstanceState()。
因此我相信你可以在onSaveInstanceState()中保存最大大小的Bundle,这是没有记录的。 (至少据我所知)
答案 1 :(得分:3)
您正在使用的开发工具设置可能没有您期望的行为。
如果您想测试onSaveInstanceState()
/ onRestoreInstanceState()
,最简单的方法是更改方向(<Ctrl>-<F11>
)。默认情况下,使用实例状态销毁并重新创建活动。
答案 2 :(得分:1)
在另一个问题的主题中给出了onRestoreInstanceState()
未调用(或更多peciselly:调用时)的原因:onSaveInstanceState () and onRestoreInstanceState ()