由于对网上流传的横竖屏切换生命周期文章的质疑,自己分别在android模拟器(Android4.3)和真机(小米m1,android4.0)进行测试,测试结果如下:
程序运行:onCreate()->onStart()->onResume()
按home键:onPause()->onSaveInstanceState()->onStop()
然后点程序图标进入触发:onRestart()->onStrart()->onResume()
按返回键:onPause()->onStop()->onDestroy()
然后点程序图标进入触发:onCreate()->onStart()->onResume()
启动第二个Activity:onPause()->second onCreate()->second onStart()->second onResume()
->onSaveInstanceState()->onStop()(其中second 指的是第二个Activity的生命周期)
然后点返回键回到第一个Activity:second onPause()->onRestart()->onStrart()->onResume()
->second onStop()->second onDestroy()
横竖屏切换:
1)当清单文件androidManifest.xml不添加Android:configchanges时 或者 添加android:configChanges="orientation" 或者 添加android:configChanges="orientation|keyboardHidden"时,横屏切换成竖屏、竖屏切换成横屏都是触发一次:
onPasue()->onSaveInstanceState()->onStop()->onDestroy()->onCreate()->onStrart()->onRestoreInstanceState()->OnResume()
2)当清单文件androidManifest.xml添加android:configChanges="orientation|screenSize"时
横屏切换成竖屏、竖屏切换成横屏都是触发一次:onConfigurationChanged
5.15补充:
摘自:http://blog.youkuaiyun.com/w2865673691/article/details/24129913
不重新加载activity
在AndroidManifest.xml中targetSdkVersion要小于13
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="12" />
Activity里增加:
android:configChanges="keyboard|orientation "
在android3.2之后添加了一个新的参数screenSize,如果android:targetSdkVersion大于等于13的话上面的取值就不对了,必须是:
android:configChanges="keyboard|orientation|screenSize"为了适配所有手机,这个targetSdkVersion要小于13。