Android 设备方向更改时未调用onConfigChanged()

Android 设备方向更改时未调用onConfigChanged(),android,android-orientation,android-configchanges,Android,Android Orientation,Android Configchanges,我在应用程序中捕获方向更改时遇到问题。我想防止在设备重新定向时重新启动我的应用程序窗体 我的应用程序中总共有3个活动(第三个是FragmentActivity)。主要的用户交互是通过碎片活动进行的 我已更改清单,以便所有活动都具有以下属性: android:configChanges=“orientation” 我还覆盖了所有活动中的onConfigurationChanged()方法,为了查看它是否真的被调用,我包含了一个Log.I()语句,但没有报告任何内容 我目前正在使用Emulator进

我在应用程序中捕获方向更改时遇到问题。我想防止在设备重新定向时重新启动我的应用程序窗体

我的应用程序中总共有3个活动(第三个是FragmentActivity)。主要的用户交互是通过碎片活动进行的

我已更改清单,以便所有活动都具有以下属性:

android:configChanges=“orientation”

我还覆盖了所有活动中的
onConfigurationChanged()
方法,为了查看它是否真的被调用,我包含了一个
Log.I()
语句,但没有报告任何内容

我目前正在使用Emulator进行测试,当我按CTRL+F12键时,会报告方向更改

I/ActivityManager(67):配置已更改:{scale=1.0 imsi=310/260 loc=en_US touch=3键=2/1/2导航=3/1方位=1布局=34 uiMode=17 seq=10}

我有什么误解吗?

来自:

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

来自:


注意:从Android 3.2(API级别13)开始,当设备在纵向和横向之间切换时,“屏幕大小”也会改变。因此,如果要防止在为API级别13或更高版本(如minSdkVersion和targetSdkVersion属性所声明)开发时由于方向更改而导致运行时重新启动,则必须在“方向”值之外包含“屏幕大小”值。也就是说,您必须是android:configChanges=“orientation | screenSize”。但是,如果您的应用程序的目标API级别为12或更低,那么您的活动将始终自行处理此配置更改(此配置更改不会重新启动您的活动,即使在Android 3.2或更高版本的设备上运行)。

我刚刚注意到它在实际设备上运行良好,即没有像我预期的那样重新启动。可能是模拟器问题?这意味着如果我的应用程序目标api级别为16,我应该使用android:configChanges=“orientation | screenSize”?我有min sdk版本10和target sdk版本15。Android将不允许我将屏幕大小作为配置更改案例,也不会将屏幕方向更改委托给活动。将目标sdk版本更改为10将恢复预期功能。你知道我如何保持目标版本15,但仍然能够捕获屏幕方向的变化吗?谢谢。我刚刚注意到它在实际设备上运行良好,即没有像我预期的那样重新启动。可能是模拟器问题?这意味着如果我的应用程序目标api级别为16,我应该使用android:configChanges=“orientation | screenSize”?我有min sdk版本10和target sdk版本15。Android将不允许我将屏幕大小作为配置更改案例,也不会将屏幕方向更改委托给活动。将目标sdk版本更改为10将恢复预期功能。你知道我如何保持目标版本15,但仍然能够捕获屏幕方向的变化吗?谢谢