Android 为什么onSaveInstanceState在onPause之后调用

Android 为什么onSaveInstanceState在onPause之后调用,android,android-activity,Android,Android Activity,在我的Android应用程序中,当应用程序进入后台时,总是调用onSaveInstanceState()。我的理解是,当操作系统关闭应用程序时,将调用onSaveInstanceState()。考虑到这一点,我设计了一些逻辑。但是,在中的实施过程中,我们注意到了这种奇怪的行为。有没有办法区分onSaveInstanceState()是在操作系统关闭应用程序后调用的,还是在正常暂停时调用的。根据文档: 此方法在活动可能被终止之前调用,以便在将来某个时间它返回时可以恢复其状态 换句话说,在操作系统终

在我的Android应用程序中,当应用程序进入后台时,总是调用onSaveInstanceState()。我的理解是,当操作系统关闭应用程序时,将调用onSaveInstanceState()。考虑到这一点,我设计了一些逻辑。但是,在中的实施过程中,我们注意到了这种奇怪的行为。有没有办法区分onSaveInstanceState()是在操作系统关闭应用程序后调用的,还是在正常暂停时调用的。

根据文档:

此方法在活动可能被终止之前调用,以便在将来某个时间它返回时可以恢复其状态

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

检查文档:

无法保证它是在onPause()之前还是之后发生

onSavedInstanceState()在活动暂停之前调用(不可见)。如果活动是故意销毁的(例如:用户按了backspace),则不会调用SavedInstanceState()。onSavedInstanceState()的主要作用是保留视图

简短回答:不,你不能


有关更多信息,请阅读:。碎片也可以使用。

理论似乎不错。但实际上,
onSaveInstanceState()
在每次暂停时都会被调用。这正是我在回答中试图说的原因。:)它不会在系统实际关闭应用程序之前立即调用
onSaveInstanceState()
在应用程序进入后台时会立即调用,以防系统在以后杀死应用程序。因此在
onSaveInstanceState()
中,我们不知道是正常暂停还是应用程序被操作系统杀死?正确。调用
onSaveInstanceState()
后,应用程序进程可能永远不会被操作系统终止,而只是在稍后再次恢复。你可以把它想象成一种先发制人的措施,“以防万一”。我认为这是不对的,我认为onSavedInstanceState是在onPause之后调用的,而不是在onPause之前。