對android:configChanges屬性,一般認為有以下幾點
1、不設定Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次
2、設定Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時隻會執行一次
3、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,隻會執行onConfigurationChanged方法
但是,自從Android 3.2(API 13),在設定Activity的android:configChanges="orientation|keyboardHidden"後,還是一樣 會重新調用各個生命周期的。因為screen size也開始跟着裝置的橫豎切換而改變。是以,在AndroidManifest.xml裡設定的MiniSdkVersion和 TargetSdkVersion屬性大于等于13的情況下,如果你想阻止程式在運作時重新加載Activity,除了設定"orientation", 你還必須設定"ScreenSize"。
解決方法:
AndroidManifest.xml中設定android:configChanges="orientation|screenSize“
我是設定如下
android:configChanges="orientation|screenSize|keyboardHidden"
加上這個設定之後尼,隻要Activity不打開了,螢幕旋轉時,不會再重新執行onCreate等,如果是旋轉的Activity處于前台,那麼旋轉螢幕不會執行任何的生命方法,隻會執行
@Override
public void onConfigurationChanged(Configuration newConfig)
方法