我在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()
,每次我旋转设备时,都会重新创建应用,前面提到生命周期的回调被称为。
任何解释为何会发生这种情况?
答案 0 :(得分:1)
此处您尚未在screenSize
中加入android:configChanges
。
根据文件
警告:从Android 3.2(API级别13)开始,“屏幕大小” 当设备在纵向和横向之间切换时也会发生变化 取向。因此,如果您希望阻止运行时重新启动 开发API级别13或更高级别时的方向更改(如 由minSdkVersion和targetSdkVersion属性声明),你 除“方向”外,还必须包含“screenSize”值 值。也就是说,你必须decalare 机器人:configChanges = “方向|屏幕尺寸”。但是,如果你的 应用程序目标API级别12或更低,然后您的活动始终 处理此配置更改本身(此配置更改 即使在Android 3.2或Android上运行,也不会重新启动您的活动 更高的设备)。
因此,如果您希望收到onConfigurationChanged
回调,则必须在screenSize
中添加android:configChanges
。
有关详细信息,请参阅this