1

我在manifest.xml以下标签中指定

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

并且android:configChanges="Orientation|keyboardhidden|keyboard"意味着避免在“方向”或“键盘隐藏/可见”的情况下重新创建应用程序

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

有什么解释为什么会这样吗?

4

1 回答 1

1

在这里你没有包含screenSizeandroid:configChanges.

根据文档

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

因此,如果您想接收回调..onConfigurationChanged您必须添加screenSize.android:configChanges

有关更多信息,您可以看到这个

于 2014-10-16T10:49:43.443 回答