什么时候实际使用了savedInstanceState包?

时间:2012-03-23 21:40:25

标签: android android-activity android-lifecycle

是否有人知道在活动中何时使用savedInstanceState包的详尽列表?

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

还有哪些其他案例?

要清楚,“used”是指调用onCreate()时,savedInstanceState包不为null,并且包含我上次调用onSaveInstanceState()时传入的数据。

2 个答案:

答案 0 :(得分:39)

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

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

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

答案 1 :(得分:20)

onSaveInstanceState仅用于存储应用程序生命周期的数据(即暂时)

数据仅保存在内存中,直到应用程序处于活动状态,换句话说,当应用程序关闭时,此数据会丢失,因此在您强行关闭的情况下,不会使用应用程序onSaveInstanceState

只有在应用程序处于活动状态时进行操作时才能调用它,例如当您更改屏幕方向时,活动仍然完好无损,因此会调用onSaveInstanceState

但是,如果您要永久存储数据,则必须使用SharedPreferencesSQLite database