首页 > 试题广场 >

当 Activity 被消毁时,如何保存它原来的状态()

[单选题]
当 Activity 被消毁时,如何保存它原来的状态()
  • 实现 Activity 的 onSaveInstanceState()方法
  • 实现 Activity 的 onSaveInstance()方法
  • 实现 Activity 的 onInstanceState()方法
  • 实现 Activity 的 onSaveState()方法
这个网址https://developer.android.com/guide/components/activities.html,有关于Activity保存状态的详细原理

保存 Activity 状态

管理 Activity 生命周期的引言部分简要提及,当 Activity 暂停或停止时,Activity 的状态会得到保留。 确实如此,因为当 Activity 暂停或停止时,Activity 对象仍保留在内存中 — 有关其成员和当前状态的所有信息仍处于活动状态。 因此,用户在 Activity 内所做的任何更改都会得到保留,这样一来,当 Activity 返回前台(当它“继续”)时,这些更改仍然存在。

不过,当系统为了恢复内存而销毁某项 Activity 时,Activity 对象也会被销毁,因此系统在继续 Activity 时根本无法让其状态保持完好,而是必须在用户返回 Activity 时重建 Activity 对象。但用户并不知道系统销毁 Activity 后又对其进行了重建,因此他们很可能认为 Activity 状态毫无变化。 在这种情况下,您可以实现另一个回调方法对有关 Activity 状态的信息进行保存,以确保有关 Activity 状态的重要信息得到保留:onSaveInstanceState()

系统会先调用 onSaveInstanceState(),然后再使 Activity 变得易于销毁。系统会向该方法传递一个 Bundle,您可以在其中使用 putString() 和 putInt() 等方法以名称-值对形式保存有关 Activity 状态的信息。然后,如果系统终止您的应用进程,并且用户返回您的 Activity,则系统会重建该 Activity,并将 Bundle 同时传递给 onCreate() 和 onRestoreInstanceState()。您可以使用上述任一方法从 Bundle 提取您保存的状态并恢复该 Activity 状态。如果没有状态信息需要恢复,则传递给您的 Bundle 是空值(如果是首次创建该 Activity,就会出现这种情况)。

编辑于 2017-04-10 22:14:52 回复(0)
onSaveInstanceState()该方法是在程序可能被销毁的时候就会被调用,如长按HOME键等操作。
和他对应的还有一个方法是onReStoreInstanceState()它是在应用实际上已经被销毁的才会被调用。
可以在Activity的OnCreate方法的bundle参数进行数据的恢复操作

发表于 2020-08-14 17:45:52 回复(0)
A. onSaveInstanceState()用来保存Activity即将被销毁时的信息,而这个即将被销毁的具体情况由内部决定。
发表于 2017-02-23 09:30:13 回复(0)
onSaveInstanceState()
当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
发表于 2015-08-18 10:33:39 回复(6)

当activity A 跳转到activity B时,A会执行onSaveInstanceState,当从B回到A时,如果A被杀死,则会运行onCreate,并携带参数savedInstanceState;如果A没有被杀死,则运行onResume。

发表于 2019-03-22 13:49:47 回复(0)
 A
发表于 2014-12-31 03:34:38 回复(0)