Android:高效的屏幕旋转处理

在Android中,当屏幕方向改变(在横向和纵向之间)时,如果处理不当,将会调用onCreate方法,当结果太简单地更改布局并保留所有相同信息时,将会重新创build整个活动。

我知道有几种方法可以解决这个问题,但我对最有效的方式感兴趣。

1)通过覆盖onConfigurationChanged()方法并将其保留为空来告诉清单,我将处理方向更改。

2)重写onSaveInstanceState()并将数据保存在onCreate()重新填充

3) onPause() ,这将创build一个数据包并发送到onSaveInstanceState()

显然,这些都是选项,但哪一个更好(小,中,大量的数据)

谢谢

Solutions Collecting From Web of "Android:高效的屏幕旋转处理"

某些设备configuration可能会在运行时更改(如屏幕方向,键盘可用性和语言)。 当发生这种变化时,Android会重新启动正在运行的Activity( onDestroy()被调用,然后是onCreate() )。

  • 为了正确处理重新启动,重要的是您的活动通过正常的Activity生命周期来恢复其以前的状态,在Android生命周期中,Android会调用onSaveInstanceState()然后再销毁活动,以便保存有关应用程序状态的数据。 然后可以在onCreate()onRestoreInstanceState()期间恢复状态。

但是,您可能会遇到这种情况,即重新启动应用程序和恢复大量数据可能代价高昂,从而导致糟糕的用户体验。 在这种情况下,你有两个select:

  1. 在configuration更改期间保留一个对象

    允许您的活动在configuration更改时重新启动,但是将有状态的对象带到您的活动的新实例。

  2. 自己处理configuration更改

    防止系统在某些configuration更改期间重新启动活动,但在configuration发生更改时收到回叫,以便您可以根据需要手动更新活动。

所以,根据您的数据操作和用户使用体验,您可以select最适合您的应用程序。

编辑:根据你的需要只是改变布局,我认为你必须使用onConfigurationChanged() ,并在其中做的更改。