繁体   English   中英

onRestoreInstanceState()在预期时不被调用

[英]onRestoreInstanceState() not being called when it is expected

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

具体发生的是:

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

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

谁看过这个吗?

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

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

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

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

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

在另一个问题的线程中给出了为什么没有调用onRestoreInstanceState() (或者更多peciselly:调用它)的原因: onSaveInstanceState()和onRestoreInstanceState()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM