【发布时间】:2011-05-31 04:09:46
【问题描述】:
我想在我的一些活动中使用android:configChanges="orientation|keyboardHidden",这样我的 onCreate 就不会再次被调用,但我想我会先看看是否有人列出了优缺点,因为this link说它只能作为最后的手段。
【问题讨论】:
标签: android configuration orientation
我想在我的一些活动中使用android:configChanges="orientation|keyboardHidden",这样我的 onCreate 就不会再次被调用,但我想我会先看看是否有人列出了优缺点,因为this link说它只能作为最后的手段。
【问题讨论】:
标签: android configuration orientation
使用这种方法的一大优点是,它只需要您付出很少的努力,并且您的应用可以在配置更改后继续存在而不会导致崩溃。
小缺点是使用配置特定的资源(横向或纵向)不会自动应用。
根据我(也许很少)的经验,我认为花这么多精力做所有的管道并不值得。
“正确”处理这些配置更改需要您进行大量工作,如果您必须在屏幕方向更改期间支持进度对话框,事情会变得更加戏剧化。
虽然大多数人会通过更改清单来选择快速修复,并使用 android:configChanges=”keyboardHidden|orientation” 配置他们的活动,但我认为重要的是要意识到还有其他选择。
它需要更多代码,但它确实能让您更好地了解整个系统的工作原理。
【讨论】:
很奇怪,Google 并没有真正谈论其背后的原因,但我确实可以想到三个主要原因来避免使用这种方法:
最后一个原因是大的;特别是对于较旧的低 RAM 手机以及 Gingerbread 中所谓的更具攻击性的自动杀戮行为,您的活动需要知道如何在破坏后通过保存其状态来快速重新创建,而不管方向处理如何。一旦你的活动可以处理这些破坏/娱乐,你可能已经准备好轮换杀戮了。您可以通过吸收旋转事件来获得一些速度(因为您不必通过布局膨胀等返回),但这就是全部。
如果您确实决定吞下旋转,我强烈建议您始终使用模拟器或设备并选中 Development.apk 的“立即销毁活动”选项,然后确保切换应用程序或通过任务堆栈支持仍然正常工作.
根据我的经验,吸收旋转实际上是改善用户体验的好选择,尤其是对于布局复杂且可能需要一些时间重新创建的活动,但您确实需要仔细并有效地进行测试,以确保您的活动仍然即使没有旋转忽略也可以工作。
【讨论】: