我目前有两个活动:MainActivity 和 DisplayActivity。当我运行我的应用程序并旋转模拟器时,活动被破坏。当我旋转模拟器时,如何确保我的活动不会被破坏?
2 回答
您可以使用android:configChanges="orientation|screenSize"
.
但是,我强烈反对这样做,除非您知道自己在做什么。请记住,Android 允许您为纵向和横向指定不同的布局。Android 决定在第一次创建 Activity 时使用哪个布局(或者更准确地说,当您调用 时setContentView()
,通常在您的 Activity 中执行此操作onCreate()
。)如果您覆盖方向更改的默认行为,那么 Android 系统将不会加载正确的为您布局;您必须自己实施。可能还有其他事情发生在我不知道的情况下,如果您自己不处理它们可能会导致问题。
这意味着处理方向更改的首选方法是实现onSaveInstanceState()
在您的活动被销毁时存储任何状态并在onCreate()
活动重新启动时恢复状态。有关更多详细信息,请参阅管理活动生命周期。
默认情况下,当方向或语言发生重大变化时,android 将销毁并重新创建您的活动。这其实很好。如果您做的正确,活动的状态将被保存和恢复,因此用户甚至不会知道活动被重新创建。这样做时,Android 会自动应用任何可能已更改的资源,例如仅适用于横向模式的布局。
如果您真的想禁用此功能并手动更新任何可能已更改或保留旧资源的资源,请继续并android:configChanges="orientation|screenSize"
在所需的活动中添加到您的清单中。将不再在方向更改时重新创建它。