即使指定了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()
并且每当我旋转设备,应用程序被重新创建,前面提到的生命周期的回调被调用。
任何解释为什么发生这种情况?
这里你没有包括screenSize
在android: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
谢谢,现在更清楚了。请问你能提出我的问题吗? – LetsamrIt 2014-10-16 13:04:58
不是不。如果你指定'android:configChanges' onConfigurationChanged被调用。从HoneyComb开始,你还需要'screenSize' – Blackbelt 2014-10-16 10:31:59
@blackbelt谢谢你的回答。如果“android:configChnanges”在方向改变的情况下不阻止App的重新创建,那么它有什么用处?关于screenSize,它是回调还是什么? – LetsamrIt 2014-10-16 10:40:27