屏和竖屏切换是否调用Activity生命周期在mainfest.xml配置android:configChanges .
16lz
2021-12-04
不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
设置Activity的android:configChanges="orientation"时,切横,竖屏时生命周期只会执行一次。
设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用声明周期,只会执行onConfigurationChanged方法。
在android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges="keyboardHidden|orientation"属性,就不会重启activity.而只是调用onConfigurationChanged(Configuration newConfig).这样就可以在这个方法里调整显示方式.
MainActivity中:
- publicvoidonConfigurationChanged(ConfigurationnewConfig){
- try{
- super.onConfigurationChanged(newConfig);
- if(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){
- Log.v("Himi","onConfigurationChanged_ORIENTATION_LANDSCAPE");
- }elseif(this.getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT){
- Log.v("Himi","onConfigurationChanged_ORIENTATION_PORTRAIT");
- }
- }catch(Exceptionex){
- }
- }
- <?xmlversion="1.0"encoding="utf-8"?>
- <manifestxmlns:android="http://schemas.android.com/apk/res/android"
- package="com.himi"android:versionCode="1"android:versionName="1.0">
- <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
- <activityandroid:name=".MainActivity"android:label="@string/app_name"
- android:configChanges="keyboardHidden|orientation">
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- </application>
- <uses-sdkandroid:minSdkVersion="4"/>
- </manifest>
更多相关文章
- Android(安卓)AsyncTask
- 使用PHP开发Android应用程序技术介绍
- android字体大小多屏幕适配
- android studio 快捷键描述和设置
- android属性详解
- 关于服务端设置了IPV6时,Android请求网络超慢的问题记录
- Android(安卓)Activity生命周期是如何实现的
- Android横竖屏切换实例总结
- android:padding和android:margin的用法及区别