关于这个主题还有很多其他问题,但我无法解决这个问题。
在Android文档(http://developer.android.com/training/basics/activity-lifecycle/recreating.html)中,它说:
默认情况下,系统使用Bundle实例状态来保存活动布局中每个View对象的信息(例如输入EditText对象的文本值)。因此,如果您的活动实例被销毁并重新创建,则布局的状态将恢复到之前的状态,而您无需代码。
所以我在模拟器中通过简单地创建一个包含EditText视图的视图来测试它。然后我输入信息并按下主页按钮。当我重新打开应用程序时,信息消失了。不应该自动保留或者我遗失了什么?
答案 0 :(得分:1)
嗯,你是部分错误,部分是正确的。你错了,因为灰色的引用是从上下文中取出的。我将通过您提供的链接中的正确引用简要解释一下:
当您的活动被销毁时,因为用户按下后退或 活动完成了自己,系统的活动概念 实例永远消失,因为行为表明了活动 不再需要了。但是,如果系统破坏了应付的活动 系统约束(而不是正常的应用程序行为),然而 实际的Activity实例消失了,系统会记住它 存在,如果用户导航回它,系统会创建 使用一组已保存数据的活动的新实例 描述了活动被销毁时的状态。
现在,在该段之后我们有一个澄清:
警告:您的活动每次都会被销毁并重新创建 用户旋转屏幕。当屏幕改变方向时, 系统会破坏并重新创建前台活动,因为 屏幕配置已更改,您的活动可能需要加载 替代资源(例如布局)。
另一个,下面的几行是:
要保存有关活动状态的其他数据,您必须覆盖 onSaveInstanceState()回调方法。系统调用它 当用户离开您的活动并将其传递给Bundle时的方法 在您的活动被销毁的情况下将保存的对象 不料。如果系统必须稍后重新创建活动实例, 它将同一个Bundle对象传递给onRestoreInstanceState() 和onCreate()方法。
使用此Bundle(Bundle savedInstanceState),当应用程序意外崩溃或启用屏幕旋转(名称很少)时,这也是令人厌恶的(然后重新创建)前景。
您还可以查看以下“保存您的活动状态”部分,但我建议您使用此链接here。