即使指定了android:configChanges,应用程序也会重新创建?

问题描述:

我在manifest.xml指定了以下标签即使指定了android:configChanges,应用程序也会重新创建?

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

而且android:configChanges="Orientation|keyboardhidden|keyboard"手段避免应用程序的娱乐在“方向” OR的情况下,“键盘被隐藏/可见”

而在我的App类的,我我正在调用所有活动的生命周期回调。我期望当我旋转/重新定位设备时,不会再发生应用程序的重新创建。或换句话说,下面的回调按顺序将不会因为android:configChanges而被调用。回调是onPause()onStop()onDestroy()onCreate()onStart()onResume()并且每当我旋转设备,应用程序被重新创建,前面提到的生命周期的回调被调用。

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

+0

不是不。如果你指定'android:configChanges' onConfigurationChanged被调用。从HoneyComb开始,你还需要'screenSize' – Blackbelt 2014-10-16 10:31:59

+0

@blackbelt谢谢你的回答。如果“android:configChnanges”在方向改变的情况下不阻止App的重新创建,那么它有什么用处?关于screenSize,它是回调还是什么? – LetsamrIt 2014-10-16 10:40:27

这里你没有包括screenSizeandroid:configChanges

根据文档

注意:与Android 3.2(API级13)中,“画面尺寸” 也改变开始时纵向和横向取向 之间的设备切换。因此,如果要在开发API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明的 )时为 方向更改而阻止运行时重新启动,则 除“方向”外还必须包含“screenSize”值为 。也就是说,你必须decalare android:configChanges =“orientation | screenSize”。但是,如果您的 应用程序的目标级别为12或更低,则您的活动始终会自行处理此配置更改(即使在更高版本的Android 3.2或更高版本的设备上运行此配置更改 也不会重新启动您的活动)。

所以,如果你想获得onConfigurationChanged回调..你必须在android:configChanges添加screenSize

欲了解更多信息,你可以看到this

+0

谢谢,现在更清楚了。请问你能提出我的问题吗? – LetsamrIt 2014-10-16 13:04:58