Mik*_*oos 173 android android-layout
我想知道为什么不在 android:configChanges="keyboardHidden|orientation"每个(几乎每个;))活动中使用?
产品:
不太好:
坏:
但如果我们不使用不同的布局,为什么不呢?
yyd*_*ydl 324
默认情况下,当Android上发生某些键配置更改时(常见的示例是方向更改),Android会完全重新启动正在运行的Activity以帮助其适应此类更改.
当您android:configChanges="keyboardHidden|orientation"在AndroidManifest中定义时,您正在告诉Android:"请不要在拔出键盘时执行默认重置,或者手机旋转;我想自己处理.是的,我知道我在做什么"
这是一件好事吗?我们很快就会看到......
您开始使用的专业之一是:
无需担心您的活动被轮换
在许多情况下,人们错误地认为当他们有一个由方向改变("轮换")产生的错误时,他们可以通过插入来简单地修复它android:configChanges="keyboardHidden|orientation".
但是,android:configChanges ="keyboardHidden | orientation"只不过是一个bandaid.实际上,可以通过多种方式触发配置更改.例如,如果用户选择了一种新语言(即语言环境已更改),您的活动将以与方向更改相同的方式重新启动.如果需要,您可以查看所有不同类型的配置更改的列表.
编辑:更重要的是,正如hackbod在评论中指出的那样,当您的应用处于后台时,您的活动也将重新启动,Android决定通过杀死它来释放一些内存.当用户返回您的应用程序时,Android将尝试以与其他配置更改时相同的方式重新启动活动.如果你无法处理 - 用户不会高兴...
换句话说,使用android:configChanges="keyboardHidden|orientation"不是解决你的"担忧"的方法.正确的方法是对您的活动进行编码,以便他们对Android重启的任何重启感到满意.这是一个很好的做法,可以帮助你在路上,所以习惯它.
如你所说,有一个明显的优势.通过自己处理轮换来覆盖轮换的默认配置更改将加快速度.然而,这种速度确实带来了便利的代价.
简单地说,如果你对肖像和风景都使用相同的布局,那么你可以通过覆盖来保持良好的状态.视图将完全转移以填充剩余空间,而不是对活动进行全面重新加载.
但是,如果由于某种原因您在设备处于横向状态时使用不同的布局,则Android重新加载您的Activity的事实很好,因为它会加载正确的布局.[如果你在这样的Activity上使用覆盖,并希望在运行时做一些神奇的重新布局......好吧,祝你好运 - 它远非简单]
无论如何,如果android:configChanges="keyboardHidden|orientation"适合您,那就使用它.但请务必测试一些内容发生变化时会发生什么,因为方向更改并不是触发完整Acitivity重启的唯一方法.
| 归档时间: |
|
| 查看次数: |
87319 次 |
| 最近记录: |