【发布时间】:2010-09-17 19:25:02
【问题描述】:
我不希望每次旋转设备时都重新创建我的 Activity,因此我将 android:configChanges="keyboardHidden|orientation" 标签放在清单文件中。
这种方法有什么缺点吗?屏幕似乎会在旋转时自动重新布局,并且一切正常,其优点是每次屏幕旋转时我都不需要重新初始化 Activity 中的所有对象。
谢谢!
【问题讨论】:
标签: android
我不希望每次旋转设备时都重新创建我的 Activity,因此我将 android:configChanges="keyboardHidden|orientation" 标签放在清单文件中。
这种方法有什么缺点吗?屏幕似乎会在旋转时自动重新布局,并且一切正常,其优点是每次屏幕旋转时我都不需要重新初始化 Activity 中的所有对象。
谢谢!
【问题讨论】:
标签: android
不确定您是否仍需要答案,但我猜缺点是如果用户接听电话并将您的应用程序置于后台,它并不能真正让您知道您的应用程序正常工作。换句话说,如果您的应用可以在状态变化最小的情况下承受方向变化,那么它应该能够处理拨号器将焦点移开。
此外,如果您根据方向或关键字对资源进行了任何更改(例如,如果您有一个仪表板屏幕并且您想要更改主页按钮的位置),Android 将不会自动为您加载这些内容。
看看 Google 的设计模式,Google 似乎同时使用了这两种方法。例如,在新的 Google+ 应用程序中,他们不依赖 configChanges 选项,因为 LogCat 显示 unexpected resume of activity 消息,对我而言,它仅在活动被销毁和重新创建时显示。 Google 确实在其他地方使用了该选项,例如编辑约会的日历应用程序和我认为的浏览器。
因此,最好在不使用 configChanges 的情况下设计您的应用程序,然后在一切正常后添加它,如果有一些无法恢复的东西(例如上下文菜单是否显示)。
【讨论】:
Fragments 和setRetainInstance() 方法