2014-11-06 65 views
0

在我的Android应用程序中onSaveInstanceState()总是在应用程序进入后台时调用。我的理解是onSaveInstanceState()将在操作系统杀死应用程序时调用。考虑到这一点,我设计了一些逻辑。但是,在执行过程中注意到这种奇怪的行为。有没有办法区分onSaveInstanceState(),它是在操作系统杀死应用程序或在正常暂停中调用之后调用的。为什么onSaveInstanceState在onPause之后调用

回答

1

根据文档:

此方法的活动之前调用可以被杀死,这样,当它回来一段时间,在未来,它可以恢复其状态。

换句话说,在操作系统终止活动之前不会立即调用该方法。当活动进入后台并且有可能稍后恢复时调用它。在活动进入后台之前立即保存状态,可以让系统在如何杀死应用程序方面有更大的灵活性......一旦它决定应用程序被杀死,它可以立即执行(不必担心调用应用程序的onSaveInstanceState()方法才可以这样做)。

+0

理论看起来不错。但实际上'onSaveInstanceState()'在每次暂停时都被调用。 – Ammar 2014-11-12 15:03:30

+0

确切地说,这就是为什么我想在我的答案中说。 :)它不会在系统真正杀死应用程序之前立即调用。当应用程序进入后台时,会立即调用onSaveInstanceState(),以防系统稍后终止应用程序。 – 2014-11-12 15:17:10

+0

因此,在'onSaveInstanceState()'我们不知道它是正常的暂停或应用程序被操作系统杀死? – Ammar 2014-11-12 15:26:13

0

onSavedInstanceState()活动暂停之前被调用后是否会发生其担保(它不是”不可见)。如果活动被故意销毁(例如:用户按下退格键),则不会调用onSavedInstanceState()。 onSavedInstanceState()的主要作用是保存视图。

简答:不,你不能。

欲了解更多信息,请阅读:this。它也可用于碎片。

相关问题