关于android:configChanges

时间:2014-06-30 18:45:53

标签: android manifest screen-orientation

任何人都可以向我解释android:configChanges="orientation|keyboardHidden的含义吗?我有一本书解释如下:

  

第16行确保

时不会出现屏幕方向      

•硬件键盘在设备上滑动或关闭

     

•启用或禁用软件键盘。

但我仍然没有得到它,目前尚不清楚。任何人都能更好地解释一下吗?

3 个答案:

答案 0 :(得分:2)

  

但我仍然没有得到它,目前尚不清楚。

这是因为引用的解释糟糕。你需要一本更好的书。 : - )

当设备状态发生变化,可能会导致您需要不同的资源时,Android会有"配置更改"的概念。方向改变(即,将屏幕从纵向旋转到横向,反之亦然)是最常见的配置更改。但是,还有其他一些,例如语言/语言环境的变化,停靠状态等。

配置更改的默认行为是Android销毁并重新创建活动及其内容,强制您重新加载资源,以便获得正确的内容,例如新轮换到横向设备的横向布局。虽然这可能看起来是一个激烈的步骤,但一旦你习惯了它,它的效果会相当好。

会有一些活动导致此行为损害用户。一个例子是相机应用程序,其中销毁和重新创建活动可能导致立即再次进行预览的问题。对于这些情况,Android提供android:configChanges:告诉Android 销毁并重新创建某些配置更改活动的方法。 android:configChanges="orientation|keyboardHidden"表示有两种特定类型 配置更改,Android不应该销毁和重新创建活动,而应该只是在活动上调用onConfigurationChanged()

如果可能的话,应该避免{p> android:configChanges。部分原因是因为您通常需要列出所有可能的配置更改,否则您仍需要处理您遗漏的更改的destroy-and-recreate周期。部分原因是因为可能的配置名称会自行更改,您可能会错过这些更改,从而打破较新的Android设备。部分原因是因为您在onConfigurationChanged()中必须根据发生的任何配置更改来修复所有内容,您将忘记内容。

答案 1 :(得分:2)

当Android设备更改其配置(如方向)时,其屏幕将重新绘制。

如果我们定义android:configChanges="orientation|keyboardHidden,则意味着我们告诉设备在以下情况下不重绘屏幕:  

1. orientation is changed or.
2. keyboard visibiity is changed.

答案 2 :(得分:0)

防止活动被破坏并再次创建,如上面的答案。 但只有在方向或键盘状态发生变化时才会这样做