gpt4 book ai didi

android - 为什么不总是使用 android :configChanges ="keyboardHidden|orientation"?

转载 作者:IT老高 更新时间:2023-10-28 12:54:42 25 4
gpt4 key购买 nike

我想知道为什么不在每个(几乎每个 ;)) Activity 中使用 android:configChanges="keyboardHidden|orientation"

商品:

  • 无需担心您的 Activity 会被轮换
  • 更快

不太好:

  • 如果布局取决于屏幕尺寸(例如两列左右的布局),则需要更改布局

不好:

  • 没有灵活的方式在不同的方向上有不同的布局
  • 使用 fragment 时不太好

但如果我们不使用不同的布局,为什么不呢?

最佳答案

快速背景

默认情况下,当 Android 上发生某些关键配置更改(常见示例是方向更改)时,Android 会完全重启正在运行的 Activity 以帮助其适应此类更改。

当您在 AndroidManifest 中定义 android:configChanges="keyboardHidden|orientation" 时,您是在告诉 Android:“请不要在拔出键盘时进行默认重置,否则手机是旋转的;我想自己处理。是的,我知道我在做什么"

这是一件好事吗?我们很快就会看到...

不担心?

您开始的其中一个优点是:

no need to worry about your activity been rotated

在许多情况下,人们错误地认为,当他们遇到由方向变化(“旋转”)产生的错误时,他们可以简单地通过输入 android:configChanges="keyboardHidden|orientation"来修复它.

然而,android:configChanges="keyboardHidden|orientation"只不过是一个创可贴。事实上,可以通过多种方式触发配置更改。例如,如果用户选择了一种新的语言(即区域设置已更改),您的 Activity 将以与方向更改相同的方式重新启动。如果您愿意,可以查看a list of all the different types of config changes .

编辑:更重要的是,作为 hackbod在评论中指出,当您的应用程序在后台并且 Android 决定通过杀死它来释放一些内存时,您的 Activity 也将重新启动。当用户返回您的应用时,Android 将尝试重新启动 Activity,就像发生其他一些配置更改时一样。如果你不能处理 - 用户将不高兴......

换句话说,使用 android:configChanges="keyboardHidden|orientation" 并不能解决您的“烦恼”。正确的方法是对您的 Activity 进行编码,以便他们对 Android 向他们抛出的任何重启感到满意。这是一个很好的做法,可以帮助您走上正轨,所以要习惯它。

那么我应该什么时候使用呢?

正如您提到的,有一个明显的优势。通过自己处理来覆盖轮换的默认配置更改将加快速度。然而,这种速度确实是以便利为代价的。

简而言之,如果您对纵向和横向使用相同的布局,则通过覆盖您处于良好状态。 View 不会完全重新加载 Activity ,而是会简单地移动以填充剩余空间。

但是,如果由于某种原因您在设备处于横向时使用了不同的布局,Android 重新加载您的 Activity 的事实是好的,因为它会加载正确的布局。 [如果你在这样一个 Activity 上使用了覆盖,并且想在运行时做一些神奇的重新布局......好吧,祝你好运 - 这远非简单]

快速总结

无论如何,如果 android:configChanges="keyboardHidden|orientation" 适合您,请使用它。但是一定要测试发生变化时会发生什么,因为方向变化并不是触发完整 Activity 重启的唯一方法。

关于android - 为什么不总是使用 android :configChanges ="keyboardHidden|orientation"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com