View和Activity的生命週期
- 如果根佈局為RelativeLayout,那麼
onMeasume()
共會執行4次 - 如果根佈局為LinearLayout
- 如果控制元件有weight 屬性,那麼
onMeasume()
共會執行4次 - 如果控制元件有weight屬性,但是根佈局中只有唯一一個子控制元件,那麼
onMeasume()
共會執行2次
- 如果控制元件有weight 屬性,那麼
根區域性為RelativeLayout
- 開啟Activity
E/log: Activity生命週期:onCreate
E/view的生命週期: onCreate
E/view的生命週期: onFinishInflate
E/log: Activity生命週期:onStart
E/log: Activity生命週期:onResume
E/view的生命週期: onAttachedToWindow
E/view的生命週期: onMeasure
E/view的生命週期: onMeasure
E/view的生命週期: onSizeChanged
E/view的生命週期: onLayout
E/view的生命週期: onWindowFocusChanged true
E/view的生命週期: onMeasure
E/view的生命週期: onMeasure
E/view的生命週期: onLayout
E/view的生命週期: onDraw
複製程式碼
- 關閉Activity
E/view的生命週期: onWindowFocusChanged false
E/log: Activity生命週期:onPause
E/log: Activity生命週期:onStop
E/log: Activity生命週期:onDestroy
複製程式碼
-
開啟另外的Activity
- 開啟一個的Activity,使原本的Activity進入onStop
E/log: Activity生命週期:onPause E/view的生命週期: onWindowFocusChanged false E/log: Activity生命週期:onStop 複製程式碼
- 退出這個Activity,使原本的Activity重新進入到前臺
E/log: Activity生命週期:onRestart E/log: Activity生命週期:onStart E/log: Activity生命週期:onResume E/view的生命週期: onWindowFocusChanged true E/view的生命週期: onDraw 複製程式碼
-
開啟一個透明的Activity
-
開啟一個透明的Activity,使原本的Activity進入onPause
E/log: Activity生命週期:onPause E/view的生命週期: onWindowFocusChanged false 複製程式碼
-
關閉透明的Activity,使原本的Activity,進入onResume
E/log: Activity生命週期:onResume E/view的生命週期: onWindowFocusChanged true 複製程式碼
-
根區域性為LinearLayout
-
子控制元件不含有weight屬性
-
這個控制元件含有weight屬性但是它是根佈局的唯一子控制元件
E/log: Activity生命週期:onCreate E/view的生命週期: onCreate E/view的生命週期: onFinishInflate E/log: Activity生命週期:onStart E/log: Activity生命週期:onResume E/view的生命週期: onAttachedToWindow E/view的生命週期: onMeasure E/view的生命週期: onSizeChanged E/view的生命週期: onLayout E/view的生命週期: onMeasure E/view的生命週期: onLayout E/view的生命週期: onDraw E/view的生命週期: onWindowFocusChanged true 複製程式碼
-
控制元件含有weight屬性,並且它不是其根區域性中的唯一子控制元件
E/log: Activity生命週期:onCreate E/view的生命週期: onCreate E/view的生命週期: onFinishInflate E/log: Activity生命週期:onStart E/log: Activity生命週期:onResume E/view的生命週期: onAttachedToWindow E/view的生命週期: onMeasure E/view的生命週期: onSizeChanged E/view的生命週期: onLayout E/view的生命週期: onMeasure E/view的生命週期: onLayout E/view的生命週期: onDraw E/view的生命週期: onWindowFocusChanged true 複製程式碼
如果view沒有任何沒有內容,並且根佈局內有其他內容,則最後的onDraw不會執行
<!--自定義view有weight, view中無內容顯示,並且根佈局中有其他控制元件,onDraw方法沒有被執行-->
E/log: Activity生命週期:onCreate
E/view的生命週期: onCreate
E/view的生命週期: onFinishInflate
E/log: Activity生命週期:onStart
E/log: Activity生命週期:onResume
E/view的生命週期: onAttachedToWindow
E/view的生命週期: onMeasure
E/view的生命週期: onMeasure
E/view的生命週期: onSizeChanged
E/view的生命週期: onLayout
E/view的生命週期: onWindowFocusChanged true
E/view的生命週期: onMeasure
E/view的生命週期: onMeasure
E/view的生命週期: onLayout
複製程式碼
<!--自定義view無weight,viwe有內容顯示,onDraw方法被執行了-->
E/log: Activity生命週期:onCreate
E/view的生命週期: onCreate
E/view的生命週期: onFinishInflate
E/log: Activity生命週期:onStart
E/log: Activity生命週期:onResume
E/view的生命週期: onAttachedToWindow
E/view的生命週期: onMeasure
E/view的生命週期: onSizeChanged
E/view的生命週期: onLayout
E/view的生命週期: onWindowFocusChanged true
E/view的生命週期: onMeasure
E/view的生命週期: onLayout
E/view的生命週期: onDraw
複製程式碼