- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想知道为什么不在每个(几乎每个 ;)) Activity 中使用 android:configChanges="keyboardHidden|orientation"
?
商品:
不太好:
不好:
但如果我们不使用不同的布局,为什么不呢?
最佳答案
默认情况下,当 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/
我想知道Android是否有任何标志要添加到configChanges在 AndroidManifest 中的一个 Activity 属性中用于修改 反转颜色 设备的选项。 android doc显示
谁能给我解释一下 android:configChanges="orientation|keyboardHidden 是什么意思?我有一本书解释如下: Line 16 makes sure that
我试图阻止在旋转设备时调用 onCreate()。为了达到这个目标,我遵循了文档并添加了 到 list 。之后,我将其插入到
这个问题在这里已经有了答案: Android Activity, how to override manifest's android:configChanges with Java code? (2
我知道我们可以为 android:configChanges 设置以下值 mcc mnc touchScreen keyboardHidden orientation,etc. 有时我们通过这个
我正在使用 android:configChanges="orientation|keyboardHidden|screenSize" 这样当屏幕旋转从横向变为纵向时 Activity 不会再次启动,
我正在创建一个杂志应用程序,它使用 ViewPager 并在不同的 WebView 上滚动。大多数页面是纵向的,但也有一些页面可以横向显示。 为了处理这个问题,我在包含 ViewPager 的 Act
我遇到了两种方法来防止 Activity 在屏幕旋转时重绘。一种是 saveInstanceState + restoreInstanceState 组合,我仍然未能成功实现。 另一个是在manife
我正在使用 actionbarsherlock 的 ActionBar,第一次以横向或水平方向运行应用程序时,选项卡以 Tabs Mode 显示。将方向更改为纵向后,导航模式仍在 Tabs 中。第二次
我正在使用 android:configChanges="keyboardHidden|orientation" 在纵向和横向模式之间切换。但是当用户打开 纵向软键盘 并更改为 横向键盘应该隐藏或消失
引用文档: Caution: Beginning with Android 3.2 (API level 13), the "screen size" also changes when the de
我有一个 Android 库项目和使用这个库项目的主应用程序。主应用程序的 list 文件如下所示:
据我了解,如果您将“android:configChanges="orientation"'插入到 list 中的 Activity 中, Activity 将不会在方向更改时被销毁和重新创建。为了测
我使用了 Web View 。加载网页。当我改变方向时,它会重新加载。我想停止重新加载。我在 list XML 文件中做了以下更改。它适用于 android 2.2 但不适用于 android 4.0
我想避免 Activity 在屏幕方向改变时重新启动。在旧的 sdk 版本中,它是由 configChanges="orientation" (在 list 中)完成的。在较新的版本中,添加了 scr
我有一个奇怪的问题。通常在奇怪的问题上我做了一些非常愚蠢的事情。但这我完全不知道哪里出了问题。我加了 android:configChanges="orientation" 到我的应用程序的 Acti
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: Admob Error in Eclipse for android:configChanges 我想在我的 And
我只是想调整我的一些应用程序以适应 HoneyComb。 我面临的问题是我在改变方向(横向/纵向)方面的 Activity 遭到破坏 当我使用经典 Activity 时,我在 list 中写道: 但是
如何使用 Java 代码而不是 XML 来完成此操作?谢谢 android:configChanges="keyboardHidden" 最佳答案 简短回答:你不能。 长答案:开箱即用是不可能的,我想
我为 list 文件中的 Activity 添加了 android:configChanges="density"。但我没有收到 onConfigurationChanged() 回调
我是一名优秀的程序员,十分优秀!