Android:高效的屏幕旋转处理

标签 android rotation screen screen-orientation orientation-changes

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

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

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

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

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

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

谢谢

最佳答案

某些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性和语言)。发生此类更改时,Android 会重新启动正在运行的 Activity(调用 onDestroy(),然后调用 onCreate())。

  • 要正确处理重启,重要的是您的 Activity 通过正常的 Activity 生命周期恢复其先前的状态,在 哪个 Android 在销毁你的之前调用了 onSaveInstanceState() Activity ,以便您可以保存有关应用程序状态的数据。你 然后可以在 onCreate() 期间恢复状态或 onRestoreInstanceState()

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

  1. Retain an object during a configuration change

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

  2. Handle the configuration change yourself

    防止系统在某些配置更改期间重新启动您的 Activity,但在配置确实更改时收到回调,以便您可以根据需要手动更新您的 Activity。

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

编辑:根据您对更改布局的需要,我认为您必须使用 onConfigurationChanged() 并在其中进行更改。

关于Android:高效的屏幕旋转处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997822/

相关文章:

wpf - 旋转后 XAML 图像适合父级

iphone - 触摸时旋转 View

javascript - 绕另一个旋转圆旋转一个圆

ios - Iphone X 屏幕未覆盖 cordova 项目中的页眉和页脚

不同屏幕尺寸的Android布局文件夹

java - 在 OS X 上安装 Java 8 会影响需要 Java 7 的 Xamarin 吗?

android - 具有 Android 架构组件的 AppWidgetProvider

Android 多屏支持不起作用

android - 无法同步 Gradle 项目找不到参数的方法实现()[com.android.support :design:27. 1.0]

java - 如何将图像适配器(它是无限循环 View )放置在 fragment 中?