Android:高效的屏幕旋转处理

Sab*_*ado 7 android screen rotation screen-orientation orientation-changes

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

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

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

2)覆盖onSaveInstanceState()并保存此处要重新填充的数据onCreate()

3)覆盖onPause()将创建数据包并将其发送到onSaveInstanceState()

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

谢谢

use*_*305 13

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

  • 要正确处理重新启动,您的活动必须通过正常的活动生命周期恢复其先前的状态,在此生命周期中Android会onSaveInstanceState()在销毁活动之前调用,以便您可以保存有关应用程序状态的数据.然后,您可以在onCreate()或 期间恢复状态onRestoreInstanceState().

但是,您可能会遇到这样的情况:重新启动应用程序并恢复大量数据可能成本高昂,并且会导致糟糕的用户体验.在这种情况下,您还有两个选择:

  1. 在配置更改期间保留对象

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

  2. 自己处理配置更改

    在某些配置更改期间阻止系统重新启动您的活动,但在配置更改时接收回调,以便您可以根据需要手动更新活动.

因此,根据您的数据操作和应用程序的用户体验,您可以选择最适合您的方式..

编辑:根据您需要更改布局我认为您必须使用 onConfigurationChanged()并进行更改.