由于意外的配置更改,应用程序在具有Android 3.0的AVD上两次在onCreate()上运行
||
我有一个针对API级别7构建的简单android应用。唯一不寻常的是,它的清单中包含android:screenOrientation = \“ portrait \”。同样在其清单中,API级别指定为android:targetSdkVersion = \“ 11 \” android:minSdkVersion = \“ 7 \”。
它可以在API级别8的AVD上按预期方式工作,但是在API级别为11的AVD中运行时,我发现其主要活动的onCreate()在启动时运行了两次。我唯一想到的是发生了配置更改,因此我输入了以下内容:
android:configChanges = \“ mcc | mnc | locale | touchscreen | keyboard | keyboardHidden | navigation | orientation | screenLayout | fontScale \”
到清单中还行:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
进入主要活动,并在超级...行上设置一个断点。当我调试(使用Eclipse / ADT)时,它在那一行中断。
我不知道如何找出配置中已更改的内容。
在API级别11的AVD中,在启动应用程序之前,屏幕处于横向模式,但是我猜想,在运行该应用程序时,它处于纵向模式,因为它的左上方。
在API级别8的AVD中,主要活动没有遇到此断点,并且onCreate()仅被调用一次。
现在,如果我更改为android:screenOrientation = \“ landscape \”,则两个AVD都不会由于配置更改而导致中断,因此onCreate()仅运行一次。如果API级别8上的AVD使用此设置进入断点,则至少两个AVD的行为具有相似性。
有没有人看到过API级别为11的AVD的奇怪行为,并且可能有线索?
我还发现,此简单应用程序的另一个活动(用于设置首选项)显示了横向模式,当从首选项屏幕/活动返回到主活动时,主活动从onCreate()重新开始,因此似乎主要活动是由另一个配置更改引起的。当我在清单中指定首选项活动也处于纵向模式时,第二个问题就消失了。
一月
没有找到相关结果
已邀请:
0 个回复