由于意外的配置更改,应用程序在具有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()重新开始,因此似乎主要活动是由另一个配置更改引起的。当我在清单中指定首选项活动也处于纵向模式时,第二个问题就消失了。 一月     
已邀请:

要回复问题请先登录注册