有谁知道在活动中何时使用 savedInstanceState 包的详尽列表?
我知道它在设备方向改变时使用。但是,当用户从 Android 设置中强制关闭应用程序时,它似乎没有被使用,但这可能是由于我的代码中的某些内容。
还有哪些案例?
需要明确的是,“使用”是指onCreate()
调用时,savedInstanceState 包不为空,并且包含我上次onSaveInstanceState()
调用时传递给它的数据。
有谁知道在活动中何时使用 savedInstanceState 包的详尽列表?
我知道它在设备方向改变时使用。但是,当用户从 Android 设置中强制关闭应用程序时,它似乎没有被使用,但这可能是由于我的代码中的某些内容。
还有哪些案例?
需要明确的是,“使用”是指onCreate()
调用时,savedInstanceState 包不为空,并且包含我上次onSaveInstanceState()
调用时传递给它的数据。
它在 Activity 被操作系统强制终止时使用(例如:当您的 Activity 在后台并且另一个任务需要资源时)。发生这种情况时,onSaveInstanceState(Bundle outstate)
将被调用,并由您的应用添加您想要保存的任何状态数据outstate
。
当用户恢复您的 Activity 时,如果您的 Activity 在上述场景中终止,则会被onCreate(Bundle savedInstanceState)
调用并且将为非 null。savedInstanceState
然后,您的应用程序可以从中获取数据savedInstanceState
并将 Activity 的状态重新生成为用户上次看到它时的状态。
基本上onCreate
,当savedInstanceState
为空时,这意味着这是您的 Activity 的“新”启动。当它不为空时(如果您的应用程序将数据保存在 中onSaveInstanceState(...)
,则意味着需要重新创建 Activity 状态。
onSaveInstanceState
仅用于存储应用程序生命周期的数据(即临时)
数据仅在应用程序处于活动状态之前保存在内存中,换句话说,当应用程序关闭时,这些数据会丢失,因此在您强制关闭应用程序的情况下,onSaveInstanceState
不会使用该应用程序。
它只能在您在应用程序还活着的情况下进行操作时调用,例如,当您更改屏幕方向时,活动仍然完好无损,因此onSaveInstanceState
被调用。
但是,如果您想永久存储数据,则必须使用SharedPreferences
和SQLite database
.