横屏和竖屏切换不用销毁重新建立android:configChanges

来源:互联网 发布:vb精简版 编辑:程序博客网 时间:2024/06/06 02:16

不设置Activity的android:configChanges时,切屏会重新调用各个生命周期

设置Activity的android:configChanges时,切屏不会重新调用声明周期,只会执行onConfigurationChanged方法。


在android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges="keyboardHidden|orientation"属性,就不会重启activity.而只是调用onConfigurationChanged(Configuration newConfig).这样就可以在这个方法里调整显示方式.


MainActivity中:

  1. public void onConfigurationChanged(Configuration newConfig) {  
  2.         try {  
  3.             super.onConfigurationChanged(newConfig);  
  4.             if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {  
  5.                 Log.v("Himi""onConfigurationChanged_ORIENTATION_LANDSCAPE");  
  6.             } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {  
  7.                 Log.v("Himi""onConfigurationChanged_ORIENTATION_PORTRAIT");  
  8.             }  
  9.         } catch (Exception ex) {  
  10.         }  
  11.     }  


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.himi" android:versionCode="1" android:versionName="1.0">  
  4.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  5.         <activity android:name=".MainActivity" android:label="@string/app_name"  
  6.             android:configChanges="keyboardHidden|orientation">  
  7.             <intent-filter>  
  8.                 <action android:name="android.intent.action.MAIN" />  
  9.                 <category android:name="android.intent.category.LAUNCHER" />  
  10.             </intent-filter>  
  11.         </activity>  
  12.     </application>  
  13.     <uses-sdk android:minSdkVersion="4" />  
  14. </manifest>