即使指定了android:configChanges,App也会重新创建?

时间:2014-10-16 10:25:58

标签: android screen-orientation android-lifecycle android-orientation android-configchanges

我在manifest.xml中指定了以下标记

<activity android:screenOrientation="fullsensors
          android:configChanges="orientation|keyboardhidden|keyboard"
</activity>

android:configChanges="Orientation|keyboardhidden|keyboard"表示在“方向”或“键盘隐藏/可见”的情况下避免重新创建应用程序

在我的App类中,我正在调用所有活动的生命周期回调。我期望当我旋转/重新定位设备时,不会重新启动应用程序。或者换句话说,由于android:configChanges,将不会调用以下回调。回调是onPause() onStop() onDestroy() onCreate() onStart() onResume(),每次我旋转设备时,都会重新创建应用,前面提到生命周期的回调被称为。

任何解释为何会发生这种情况?

1 个答案:

答案 0 :(得分:1)

此处您尚未在screenSize中加入android:configChanges

根据文件

  

警告:从Android 3.2(API级别13)开始,“屏幕大小”   当设备在纵向和横向之间切换时也会发生变化   取向。因此,如果您希望阻止运行时重新启动   开发API级别13或更高级别时的方向更改(如   由minSdkVersion和targetSdkVersion属性声明),你   除“方向”外,还必须包含“screenSize”值   值。也就是说,你必须decalare   机器人:configChanges = “方向|屏幕尺寸”。但是,如果你的   应用程序目标API级别12或更低,然后您的活动始终   处理此配置更改本身(此配置更改   即使在Android 3.2或Android上运行,也不会重新启动您的活动   更高的设备)。

因此,如果您希望收到onConfigurationChanged回调,则必须在screenSize中添加android:configChanges

有关详细信息,请参阅this