天天看點

android manifest中activity android:configChanges 橫豎屏切換,禁止重建Activity

android:configChanges

Android:configChanges=[mcc,mnc,locale,touchscreen,keyboard,keyboardHidden,navigation,screenLayout,fontScale,uiMode,
     orientation,screenSize,smallestScreenSize]
           

 程式在運作時,一些裝置的配置可能會改變,如:橫豎屏的切換、鍵盤的可用性等,這樣的事情一發生,Activity會重新啟動,其中的過程是:

android manifest中activity android:configChanges 橫豎屏切換,禁止重建Activity

其 OnPasuse 、onStop 、onDestroy 方法均被調用。onSaveInstanceState 方法會在onStop之前執行,它和onPause沒有特定順序,可前可後。

在銷毀之前會先 called  onSaveInstanceState()去儲存你應用中的一些資料,然後called onDestroy(),最後才去called onCreate()或onRestoreInstanceState()方法去重新啟動Activity。

當指定的屬性後,屬性發生變化時,不會去重新啟動Activity,而是通知程式去調用 onConfigurationChanged()函數  例如:在進行橫豎屏的切換時,會重新啟動Activity,而定義了這個屬性,就不會重新啟動Activity了,而是去調用 onConfigurationChanged()函數。

可以設定多個屬性,中間用|隔開

VALUE                         DESCRIPTION                                                                                                                                                                                      
"mcc" 國際移動使用者識别碼所屬國家代号是改變了-----  sim被偵測到了,去更新mcc    mcc是移動使用者所屬國家代号
"mnc" 國際移動使用者識别碼的移動網号碼是改變了------ sim被偵測到了,去更新mnc    MNC是移動網号碼,最多由兩位數字組成,用于識别移動使用者所歸屬的移動通信網
"locale" 位址改變了-----使用者選擇了一個新的語言會顯示出來
"touchscreen" 觸摸屏是改變了------通常是不會發生的
"keyboard" 鍵盤發生了改變----例如使用者用了外部的鍵盤
"keyboardHidden" 鍵盤的可用性發生了改變
"navigation" 導航發生了變化-----通常也不會發生
"screenLayout" 螢幕的顯示發生了變化------不同的顯示被激活
"fontScale" 字型比例發生了變化----選擇了不同的全局字型
"uiMode" 使用者的模式發生了變化
"orientation" 螢幕方向改變了
"screenSize" 螢幕大小改變了
"smallestScreenSize" 螢幕的實體大小改變了,如:連接配接到一個外部的螢幕上
public void onConfigurationChanged(Configuration newConfig) {    
        try {    
            super.onConfigurationChanged(newConfig);    
            if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {    
                Log.v("Main", "onConfigurationChanged_ORIENTATION_LANDSCAPE");    
            } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {    
                Log.v("Main", "onConfigurationChanged_ORIENTATION_PORTRAIT");    
            }    
        } catch (Exception ex) {    
        }    
    }
           

橫豎屏切換,禁止重建Activity

android:configChanges="orientation|keyboardHidden|screenSize"
           

繼續閱讀