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