0

关于这个主题还有很多其他问题,但我一直无法弄清楚这个问题。

在 Android 文档(http://developer.android.com/training/basics/activity-lifecycle/recreating.html)中它说:

默认情况下,系统使用 Bundle 实例状态来保存有关您的活动布局中每个 View 对象的信息(例如输入到 EditText 对象中的文本值)。因此,如果您的活动实例被销毁并重新创建,则布局的状态将恢复到之前的状态,而您不需要任何代码。

因此,我通过简单地创建一个包含 EditText 视图的视图在模拟器中对此进行了测试。然后我在其中输入信息并按主页按钮。当我重新打开应用程序时,信息消失了。这不应该自动保留还是我错过了什么?

4

1 回答 1

1

好吧,您部分错误,部分正确。你错了,因为灰色的引用是脱离上下文的。我将通过从您提供的链接中正确引用来简要解释一下:

当您的 Activity 因用户按下 Back 或 Activity 自行结束而被销毁时,系统对该 Activity 实例的概念将永远消失,因为该行为表明不再需要该 Activity。但是,如果系统由于系统限制(而不是正常的应用程序行为)而破坏了 Activity,那么尽管实际的 Activity 实例已经消失,但系统会记住它的存在,因此如果用户导航回它,系统会创建一个新的使用一组保存的数据来描述活动被销毁时的状态的活动实例。

现在,在那段之后,我们有一个澄清:

注意:每次用户旋转屏幕时,您的活动都会被销毁并重新创建。当屏幕改变方向时,系统会销毁并重新创建前台 Activity,因为屏幕配置已更改并且您的 Activity 可能需要加载替代资源(例如布局)。

另一个,下面几行是:

要保存有关活动状态的其他数据,您必须重写 onSaveInstanceState() 回调方法。当用户离开您的活动时,系统会调用此方法,并将 Bundle 对象传递给它,该对象将在您的活动被意外销毁时保存。如果系统必须稍后重新创建活动实例,它会将相同的 Bundle 对象传递给 onRestoreInstanceState() 和 onCreate() 方法。

当应用程序意外崩溃或启用屏幕旋转(仅举几例)时使用此 Bundle(Bundle savedInstanceState),这也会破坏(然后重新创建)您的前景。

您还可以查看以下“保存您的活动状态”部分,但我会在此处向您推荐此链接。

于 2013-02-08T10:27:14.190 回答