当用户在纵向和横向模式之间切换时,为什么系统会破坏并重新启动活动?

时间:2012-05-31 13:25:07

标签: android

众所周知,当用户在纵向和横向模式之间切换时,android会破坏并重新启动一个Activity,我们可以通过覆盖onConfigurationChanged()回调来阻止这种模式。任何人都可以向我解释一下系统破坏和启动活动的实际需求是什么?如果我覆盖onConfigurationChanged(),是否有任何副作用?

2 个答案:

答案 0 :(得分:4)

  

虽然这种行为非常强大,但您的应用程序会适应   在运行时自动到设备的配置,它是   有时会让新的Android开发人员感到困惑,他们想知道为什   活动被破坏并重新创建。面对这个“问题”,一些   开发人员选择自己处理配置更改,   在我看来,短期解决方案会使他们的生活复杂化   当其他设备出现或应用程序变得更多时   复杂。自动资源处理非常高效和简单   使应用程序的用户界面适应各种设备的方法   设备配置。它有时会付出代价。

参考:http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html

答案 1 :(得分:0)

重新启动Activity的主要目的是因为Android需要更改布局,资源等以适应新的屏幕方向。如您所知,每个方向(通常)都有自己的Application Resources。 Android的设计者决定最好只是重新启动Activity,因为在更改资源时需要做很多工作。

在Honeycomb出现Fragment s之后,这一点尤其重要。根据您的方向,您可以显示完全不同的片段集和相关的数据集。

我强烈建议不要覆盖onConfigurationChanged()。相反,请阅读他的答案中提供的HandlerExploit链接。它展示了如何使用onRetainNonConfigurationInstance()更有效地处理方向更改。