我一直在努力解决这个问题。
尽管我在 Orientation Change 上阅读了很多内容,但 Android 会终止一个 Activity 并将其作为一个新 Activity 启动,处理此问题的唯一方法是将所有内容保存在 onSaveInstanceState()
中。并尝试在 onCreate()
中恢复它.
但是我的 Activity 在不同的时间做了很多不同类型的网络 Activity ,如果在执行网络 Activity 时方向发生了变化,我将不得不处理很多不同和复杂的场景。
有没有什么简单的方法可以让Android在改变方向时根本不需要重绘这个 Activity ,以便它自动保存所有数据并重新使用它?
我想知道有没有这样的事情。
最佳答案
是的,您可以添加属性 android:configChanges="orientation"
AndroidManifest.xml
中的 Activity 声明文件。
编辑 :android:configChanges
的目的属性是为了防止在真正需要时重新创建 Activity 。例如,Camera 应用程序使用此属性,因为当方向更改发生时,不得重新创建相机预览屏幕。用户希望在旋转设备时相机预览能够毫无延迟地工作,并且相机初始化不是一个非常快的过程。因此,相机应用程序手动处理方向更改是一种 native 行为。
对于大多数应用程序,在方向更改期间是否重新创建 Activity 并不重要。但有时由于 Activity 创建速度慢、 Activity 执行异步任务或其他一些原因,在此过程中持久化 Activity 会更方便。在这种情况下,可以稍微调整应用程序并使用 android:configChanges="orientation"
属性。但是,当您使用此调整时,真正重要的是要了解 必须 实现正确保存和恢复状态的方法!
所以总结这个答案,android:configChanges
可以让您提高应用程序的性能或在某些极少数情况下使其行为“原生”,但它不会减少您必须编写的代码量。
关于android - 强制 Android 在方向更改时不重绘 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933583/