为什么Android会在屏幕旋转时重新启动活动?

为什么Android会在屏幕旋转时重新启动活动?,android,android-activity,orientation,Android,Android Activity,Orientation,在我开发的所有应用程序中,我一直在使用 android:configChanges="keyboardHidden|orientation|screenSize" 当屏幕旋转时,强制停止Android重新启动活动。但最近我在一些类似这样的答案中看到了反对这一点的建议。我想知道为什么这是一个糟糕的方法,为什么Android坚持在屏幕旋转时重新启动活动 谢谢。答案在您发布的链接中的一个链接中 这是因为任何应用程序资源,包括布局文件, 可以根据任何配置值进行更改。因此,唯一安全的方法 处理配置更改

在我开发的所有应用程序中,我一直在使用

android:configChanges="keyboardHidden|orientation|screenSize"
当屏幕旋转时,强制停止Android重新启动活动。但最近我在一些类似这样的答案中看到了反对这一点的建议。我想知道为什么这是一个糟糕的方法,为什么Android坚持在屏幕旋转时重新启动活动


谢谢。

答案在您发布的链接中的一个链接中

这是因为任何应用程序资源,包括布局文件, 可以根据任何配置值进行更改。因此,唯一安全的方法 处理配置更改是为了重新检索所有资源, 包括布局、抽绳和绳。因为活动必须 已经知道如何保存自己的状态并从中重新创建自己 在这种状态下,这是一种方便的重新启动活动的方法 使用新的配置自动恢复


我知道其中一个原因是允许根据需要加载特定于景观的布局

重新启动行为旨在通过使用与新设备配置匹配的替代资源自动重新加载应用程序,帮助应用程序适应新配置


因此,主要的想法是在创建时决定活动将使用哪个布局文件。

我想说,如果在配置更改之间没有任何更改,可以使用(android:configChanges=“keyboardHidden | orientation | screenSize”),这样我们告诉系统,我们正在以我们的方式处理这个问题(或者我们不需要改变任何事情)。 同样,如果您使用的是配置更改标志,那么您不需要在代码或UI中更改与它们相关的任何内容


所以,如果我不想更改任何绘图或布局,那么使用配置更改就可以了。这是一种不好的做法吗?它会导致任何错误吗?@SouravKanta:“这是一种不好的做法吗?”--是的,只要你的应用程序可能有bug。假设用户运行你的应用程序,然后进入设置,更改他们的语言,然后返回到你的应用程序。Android将销毁并重新创建你的活动,因为你的
Android:configChanges
没有列出
locale
。有许多不同的配置更改,不仅仅是hree你的名单,Android将摧毁和重建你的任何活动。