我遇到了以前没有用过的问题。
我正在使用Android 4.3的Galaxy Nexus,我遇到的问题是我在Manifest上以这种方式声明了一个Activity:
<activity
android:name=".Authorization"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize|stateHidden">
</activity>
所以,当我改变手机的方向时,它会一次又一次地进入onCreate方法!!据我所知,如果我写
android:configChanges="orientation|keyboardHidden|screenSize"
活动不应该再次进入onCreate .....
任何人都知道发生了什么?
非常感谢!
答案 0 :(得分:2)
当然,活动不应该进入onCreate方法,因为它违反了lifecycle。
但手机的开发者选项中有一个配置可以强制出现这种奇怪的情况。这不是你代码的错。
该选项称为“不要保留活动”,它用于在系统销毁活动时测试应用程序的行为(例如,当内存不足时)。
要更改它,请转到配置 - &gt;开发人员选项,在“应用”中,取消选中“不要保留活动”。
答案 1 :(得分:0)
感谢Rusmus,Bhr和praven sharma的答案,
正如Rusmus所说,在Android文档中,他们解释说,当你向Activity声明我做的标志时,Activity应调用onConfigurationChanged方法:
重点是,它还说明了以下内容:
现在,当其中一个配置发生变化时,MyActivity不会 重新开始。相反,MyActivity接到一个电话 onConfigurationChanged()
我真的不明白为什么在这款手机上它正在进入onCreate,而在使用Android 4.04的Galaxy SII上却没有发生。在我的三星Galaxy SII上,它不是一次又一次地使用orientationChanges重新进入onCreate()。
非常感谢!