安卓在横竖屏切换的时候,Activity在没有配置configChanges
属性情况下会重新创建,重新创建可能会造成页面数据丢失。这时可以通过onSaveInstanceState()
周期存储数据,在onCreate()
和onRestoreInstanceState()
周期中取出数据做后续处理。当然除此之外还可以配置activity,使得屏幕发生变换的时候不重新创建,在AndroidManifest.xml中找到需要配置的activity,设置android:configChanges="orientation"
属性,单单设置orientation
这个值还不够,因为当项目编译时指定的minSdkVersion和targetSdkVersion大于13时,如果不额外指定screenSize属性,那么当屏幕发生旋转时还是会发生Activity重新创建。
所以,想要屏幕发生旋转时,Activity不重新创建的正确配置为android:configChanges="orientation|screenSize"
,即:
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
网友评论