为什么在旋转屏幕时Android活动会被销毁?

3

我一直想知道旋转时销毁活动的好处是什么?我的意思是,你可以指定 android:configChanges="orientation|screenSize",这样它就不会被销毁,但是销毁它的原因是什么呢?


可能是让活动在旋转时被销毁的优势是什么?的重复问题。 - Emmanuel
1
@Emmanuel 那个线程应该是每个Android开发者必读的。我们有多少次看到android:configChanges="orientation"被当作“解决方案”? - Simon
2个回答

3

通常情况下,当我们为纵向模式构建屏幕,然后旋转屏幕时,界面会变得混乱不堪。因此,安卓操作系统认为我们可能需要重构布局或在onOrientationChanged期间使用新的布局,这可能是活动被重新创建的原因。


我认为没有办法防止重新创建。 - Kristy Welsh
@aga - 如果您从未更改方向,则为true,但如果更改了方向,则会重新创建活动。 - Kristy Welsh
@KristyWelsh 如果你已经通过 android:configChanges="orientation" 声明了你的活动在旋转后不应该被重新创建,那么 Android 就不会重新创建它。 - aga
3
@aga android:configChanges="orientation" 这是一种折中方法,而且是一种危险的方法。我认为这种方式导致了 Android 应用程序中一半的错误。因为你不会正确编写生命周期代码,当键盘变化、来电、区域设置更改等其他原因引起活动销毁时,你的活动就会被销毁。Google 对此非常明确,在最后的情况下才使用它,只有你真正知道自己在做什么时才使用。不要使用这种折中方法。 - Simon
抱歉或者是我误解了,但为什么方向只在onStop中出现,而不是在onStop和onDestroy中都出现呢? - Dasser Basyouni
显示剩余7条评论

1
每次用户旋转屏幕时,您的活动将被销毁并重新创建。当屏幕方向改变时,系统会销毁和重新创建前台活动,因为屏幕配置已更改,您的活动可能需要加载替代资源(例如布局)。
此外,数学方面的纵横比也会发生变化,所有这些都构成了操作系统重新创建活动以知道如何进行工作的原因(这可能不是100%正确的,但是是正确的)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接