android - 强制 Android 在方向更改时不重绘 Activity

标签 android android-lifecycle

我一直在努力解决这个问题。
尽管我在 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/

相关文章:

android - RuntimeException :ClassNotFoundException android. arch.lifecycle.ProcessLifecycleOwnerInitializer

android - Firestore 分页 : StartAfter query with DocumentSnapshot not working

javascript - 以编程方式单击 Android WebView 中的按钮

android - Unity Android - Facebook 集成 : missing Debug Hashkey

android - 从 LifeCycleService 观察 LiveData

android - 从纵向 Activity 中以横向方式打开相机时上下文为空

Android,为框架布局配置点击监听器

android - 如何为我自己的应用程序创建自定义推送通知?

android - Android-onCreate中的finish()行为不一致

java - Toast 甚至在 finish() 之后显示;