天天看點

android:configChanges屬性研究

對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)

方法

繼續閱讀