据我所知,onSaveInstanceState()
和onRestoreInstanceState()
方法旨在存储活动状态即将onPause()
之前的动态数据。我创建了一个简单的Activity
,其中包含一个按钮,单击它后会更改其文本。我确实在他们的身体中没有任何内容覆盖这两种方法:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
我通过移动到主屏幕并返回应用程序来隐藏和恢复活动。当活动恢复时,按钮的文本不是默认值,正如我预期的那样,但它是在将活动传递给onPause()
之前的状态。如果我的onRestoreInstanceState()
方法为空,它是如何工作的。
更奇怪的是 - 我试图调试以查看何时调用这两个方法并注意到onRestoreInstanceState()
甚至没有被调用。
答案 0 :(得分:0)
用于在Activity的状态即将进入onPause()之前存储动态数据。
不完全。作为onSaveInstanceState()
州的文档:
“如果被调用,此方法将在onStop()之前发生。无法保证它是在onPause()之前还是之后发生。”
我通过移动到主屏幕并返回应用程序来隐藏和恢复活动。
可能触发onSaveInstanceState()
也可能不触发onRestoreInstanceState()
。它不太可能触发onSaveInstanceState()
。测试这些方法的更好方法是更改屏幕方向。
当活动恢复时,按钮的文本不是默认值,正如我预期的那样,但它与将活动传递给onPause()之前的情况一样。
用户无法输入按钮,因此{{1}}的默认实现会忽略它们。