1. 程式人生 > >android橫豎屏切換,activity生命週期方法是否會回撥

android橫豎屏切換,activity生命週期方法是否會回撥

預設情況下的一個應用,沒有在androidmainfest檔案進行任何設定一切都是預設的情況下,我們當改變了他的orientation時候是會銷燬當前activity,新建一個新的activity

public void orien(View view) {

        Configuration configuration = getResources().getConfiguration();
        // 當前是橫屏
        if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Log.i
(TAG, "設為豎屏"); MainActivity.this .setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT); } else if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) { Log.i(TAG, "設為橫屏"); MainActivity.this .setRequestedOrientation
(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } }

在按下按鈕後,改變系統方向屬性從生命週期函式執行順序可以知道是先銷燬了activity然後在新建了一個新的activity

現在這種狀況下希望後來的activity能獲取到原來activity資訊必須實現下面兩個方法

    @Override
    protected void onSaveInstanceState(Bundle outBundle) {
        super.onSaveInstanceState(outBundle);
        outBundle.putBoolean("RoadChange"
, mChange); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); mChange = savedInstanceState.getBoolean("RoadChange"); }

不想用上面方法就用下面方法

對activity設定這個屬性android:configChanges=”keyboardHidden|orientation|screenSize” 這句話意思就是配置雙引號裡面引數意義,軟鍵盤隱藏,方向,螢幕大小改變時候回撥onConfigurationChanged方法。
現在當單擊按鈕觸發系統方向屬性改變時候不會重新繪製activity,所以那些生命週期回撥方法也不會呼叫了。只是會回撥onConfigurationChanged方法。
這裡寫圖片描述