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

how*_*ttl 25 android android-lifecycle android-activity

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

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

还有哪些其他案例?

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

tri*_*iad 39

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

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

基本上在onCreate,当savedInstanceState为null时,则表示这是您的Activity的"新鲜"启动.当它为非null时(如果您的应用程序保存了数据onSaveInstanceState(...),则表示需要重新创建活动状态).


Ari*_*eem 20

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

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

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

但是,如果要永久存储必须使用的数据SharedPreferences,请执行此操作SQLite database.