Android 实际使用savedInstanceState捆绑包的时间是?

Android 实际使用savedInstanceState捆绑包的时间是?,android,android-activity,android-lifecycle,Android,Android Activity,Android Lifecycle,有人知道在活动中何时使用savedInstanceState捆绑包的详尽列表吗 我知道它是在设备方向改变时使用的。然而,当用户强制从Android设置关闭应用程序时,似乎没有使用它,但这可能是由于我的代码中的某些内容 还有什么其他情况 明确地说,“使用”是指当调用onCreate()时,savedInstanceState捆绑包不是空的,它包含上次调用onSaveInstanceState()时传入的数据。当操作系统强制终止活动时使用它(例如:当您的活动处于后台且另一个任务需要资源时)。发生这种

有人知道在活动中何时使用savedInstanceState捆绑包的详尽列表吗

我知道它是在设备方向改变时使用的。然而,当用户强制从Android设置关闭应用程序时,似乎没有使用它,但这可能是由于我的代码中的某些内容

还有什么其他情况


明确地说,“使用”是指当调用
onCreate()
时,savedInstanceState捆绑包不是空的,它包含上次调用
onSaveInstanceState()
时传入的数据。

当操作系统强制终止活动时使用它(例如:当您的活动处于后台且另一个任务需要资源时)。发生这种情况时,将调用
onSaveInstanceState(Bundle outstate)
,并由您的应用程序添加要保存在
outstate
中的任何状态数据

当用户恢复您的活动时,
onCreate(Bundle savedInstanceState)如果您的活动在上述场景中终止,则会调用
并将
savedInstanceState
设置为非空。然后,您的应用程序可以从
savedInstanceState
获取数据,并将活动的状态重新生成为用户上次看到它时的状态


基本上,在
onCreate
中,当
savedInstanceState
为空时,则表示这是您活动的“新”启动。当它为非空时(如果您的应用程序将数据保存在
onSaveInstanceState(…)
,表示需要重新创建活动状态。

onSaveInstanceState
仅用于存储应用程序生存期内的数据(即临时)

只有在应用程序处于活动状态之前,数据才会保存在内存中,换句话说,当应用程序关闭时,这些数据会丢失,因此在您的情况下,当您强制关闭应用程序时,不会使用SaveInstanceState

仅当您在应用程序仍处于活动状态时执行操作时才能调用它,例如,当您更改屏幕方向时,活动仍保持不变,因此调用
onSaveInstanceState


但是,如果你想永久存储数据,你必须使用
SharedReferences
SQLite database

所以-它用于方向更改,以及当应用程序由于资源不足而终止时,但不是当用户通过Android设置停止时。是否还需要使用它?这些是打开的我只知道两种情况。有点像边缘情况,但我知道在Android 4.x中,开发者选项>不保留活动中有一个设置,这基本上会强制终止任何不可见的活动,导致调用
onSaveInstanceState