0

在我的活动中,当我移动到下一个活动时会调用 saveInstanceState(例如:活动 A 启动活动 B 并调用活动 A 的 saveInstanceState) - 这是正常行为吗?据我了解(来自文档),当操作系统关闭进程以回收资源时调用 saveInstanceState 。

4

3 回答 3

2

据我了解(来自文档),当操作系统关闭进程以回收资源时调用 saveInstanceState 。

不会。在任何 Activity 转换中都会调用它,Android 可能会想要销毁您的 Activity,但又想要重新创建该 Activity 并让它看起来从未被销毁过。常见的情况是配置更改(例如,旋转屏幕),但在其他情况下也会出现。

特别是Android不能等到“OS关闭进程来回收资源”,因为到那时,Android可能会急于获取这些资源。

于 2012-08-22T21:27:57.240 回答
2

每当您的活动从屏幕上消失时,将保存状态以供进一步表示。假设您执行屏幕方向更改。您可能知道,每当发生这种情况时,视图都会完全重新创建。Android 保持事物状态的方式是在销毁和重新创建之前保存状态。

于 2012-08-22T20:57:40.940 回答
1

onPause()打电话太频繁了...

onPause()当活动进入后台时作为活动生命周期的一部分调用,如您在中所见:

saveinstancestate()调用以在被杀死之前从活动中检索每个实例的状态,以便可以在 onCreate(Bundle) 或 onRestoreInstanceState(Bundle) 中恢复状态(此方法填充的 Bundle 将传递给两者)。

于 2012-08-22T21:11:38.393 回答